Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-tcltk/tcllib/files/, dev-tcltk/tcllib/
Date: Fri, 08 Dec 2017 18:47:58
Message-Id: 1512758832.2714e9a707652692bb0290a1f154768b409f863e.mgorny@gentoo
1 commit: 2714e9a707652692bb0290a1f154768b409f863e
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Fri Dec 8 18:45:42 2017 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Dec 8 18:47:12 2017 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2714e9a7
7
8 dev-tcltk/tcllib: [QA] Move patches to distfiles
9
10 While at it, also collect the currently separate patches into one
11 tarball.
12
13 Closes: https://bugs.gentoo.org/620570
14
15 dev-tcltk/tcllib/Manifest | 8 +-
16 dev-tcltk/tcllib/files/tcllib-1.15-XSS-vuln.patch | 907 ---------------------
17 .../tcllib/files/tcllib-1.15-tcl8.6-test.patch | 411 ----------
18 dev-tcltk/tcllib/files/tcllib-1.15-test.patch | 81 --
19 dev-tcltk/tcllib/files/tcllib-1.16-XSS-vuln.patch | 572 -------------
20 dev-tcltk/tcllib/files/tcllib-1.16-test.patch | 81 --
21 dev-tcltk/tcllib/tcllib-1.15-r2.ebuild | 13 +-
22 dev-tcltk/tcllib/tcllib-1.16.ebuild | 7 +-
23 8 files changed, 14 insertions(+), 2066 deletions(-)
24
25 diff --git a/dev-tcltk/tcllib/Manifest b/dev-tcltk/tcllib/Manifest
26 index 816a671a73e..0659ab857d3 100644
27 --- a/dev-tcltk/tcllib/Manifest
28 +++ b/dev-tcltk/tcllib/Manifest
29 @@ -1,4 +1,4 @@
30 -DIST Tcllib-1.16.tar.bz2 6089076 SHA256 033334306d3ffc499c8830d393bf7528227e49c68077b3e9247c4171b15be012 SHA512 5e0656c178c0fae907c101b5324f04ba1bb5c26f4d1015868194dbb393e88a281ecf66bc4701167db24ddb526b87acfd88223e0e9e6db1f9d0ffb919b3372752 WHIRLPOOL 543f5ef8b337eb2c34f90201c829f20cfd3beb0f7dcf146f4d27b66f0b8796bf518d44dad31e2be66857b50a515b5a10ae8e394d6b393e1b202903b6b68f04aa
31 -DIST tcllib-1.15-manpage-rename.patch.xz 3188 SHA256 d86f60e98013fe35a1038247e1992a0afc9314462d693ee10ee30ded501e1869 SHA512 9bcdb6c7dcb492a58e767529a8bb5a2c83912577ae124fec40f3bbd6fb283a4befb2dfc3d7a986b287ba9709bba7261b676d78441c8be0f614f31bc123d81126 WHIRLPOOL 1ac9fd5fddba5adab9560cabb0a5df9a3e0c2bafda861cabb6519bcef2a94c54f2dcd2e04e3b3892cda2c374c0186d7e21e4e435f109a8915eaa507019a53db8
32 -DIST tcllib-1.15-test.patch.xz 3208 SHA256 16fbf7d564f3b0f338d3f21774199738ca0014e4d689b053bef8840023cf8889 SHA512 8b9de181cdc39e0f9361694fb1bb9ee42b3fba269d13e91be31643ce3509c34e3e6b74b043e067dda49d75b6f4a009a79361f7a9ecf4613a509decb3eacf8447 WHIRLPOOL 1b138a1d742e8b7aeb574ec1eb1d7688b9a7bcf469269b4b27004f23f9d7947b9dd4828322739606bd3a9aecc11202d3712f15cd459448f18f6e9a2896911a12
33 -DIST tcllib-1.15.tar.bz2 5030648 SHA256 7a1e27f6d2e625af15d13df6117958815c8482e662a914fc1cbd7f0b0e780e71 SHA512 544b1193266e860eb59a4c313645376bba8488711b2afc629d99d0e719252db79caae73022ae1dc21dc123f949fa8930f81112c3f80328fc83952b64f93ca3c4 WHIRLPOOL 75ef40710859c0f669fdac96ee7ed5d76d6a10081649d890cadc970c21478b2daddd8289853e38239d68ad9aae0dd9ee5ee94827f1bf0e4b5b511134024e062c
34 +DIST Tcllib-1.16.tar.bz2 6089076 BLAKE2B d3b2d439689320e85a2a31f9dcd7bbb23af6d54eec299cb2b4248b961f98de95a878cc20c2bca712f907f6359ae6152d912e849a47d9394910b9278ff748d617 SHA512 5e0656c178c0fae907c101b5324f04ba1bb5c26f4d1015868194dbb393e88a281ecf66bc4701167db24ddb526b87acfd88223e0e9e6db1f9d0ffb919b3372752
35 +DIST tcllib-1.15-patchset.tar.xz 16164 BLAKE2B 590f6ea38aa2cf98e80011591d5bf06f27d4ca2af03b2e633a2752c184d2c1d78cc22f9b8472a2e5af7052cbb742a22fec0d487974a7599e4d4081bd5e80dcfe SHA512 85507cd00692138ea3c791f88bf4bbdadefa91168a55aebd1da7a89a9de37c3352be27db25bfdb7478dfc90865f906b290fdcbd858be0c01e3502f0446f03262
36 +DIST tcllib-1.15.tar.bz2 5030648 BLAKE2B 9731be4282bc3b3b0bb56021c3f0a7943ff4163d04ae397b1e0543cbce0642cbf5f64b66c57348a932d9e29c53273223998f2d8b0b087ff7ac679191e8a35ece SHA512 544b1193266e860eb59a4c313645376bba8488711b2afc629d99d0e719252db79caae73022ae1dc21dc123f949fa8930f81112c3f80328fc83952b64f93ca3c4
37 +DIST tcllib-1.16-patchset.tar.xz 5484 BLAKE2B b7dc4cd1045cc88e7cc85412734cd036a77af276635e20ff7df207bf5296df63f9c4b1374957f2d01ef278daabdb1b7bb5cb1bb9e3d2a4e0100be02d23ddbb2a SHA512 1bb3b7ed698a77502eecc7ae9fe28b0370770d08235994fd083828af4e87aee49f60c529774bf54dc339122b68fc1841acdd05b27f95ef78145934268567fc03
38
39 diff --git a/dev-tcltk/tcllib/files/tcllib-1.15-XSS-vuln.patch b/dev-tcltk/tcllib/files/tcllib-1.15-XSS-vuln.patch
40 deleted file mode 100644
41 index 4b3502dd86f..00000000000
42 --- a/dev-tcltk/tcllib/files/tcllib-1.15-XSS-vuln.patch
43 +++ /dev/null
44 @@ -1,907 +0,0 @@
45 - modules/html/html.man | 146 +++++++++++++++++-------------
46 - modules/html/html.tcl | 55 +++++++++---
47 - modules/html/html.test | 224 +++++++++++++++++++++++++++++++++++-----------
48 - modules/html/pkgIndex.tcl | 2 +-
49 - 4 files changed, 297 insertions(+), 130 deletions(-)
50 -
51 -diff --git a/modules/html/html.man b/modules/html/html.man
52 -index efb41fc..f18cf4b 100644
53 ---- a/modules/html/html.man
54 -+++ b/modules/html/html.man
55 -@@ -1,10 +1,19 @@
56 - [comment {-*- tcl -*- doctools manpage}]
57 --[manpage_begin html n 1.4]
58 -+[vset HTML_VERSION 1.4.4]
59 -+[manpage_begin html n [vset HTML_VERSION]]
60 -+[see_also htmlparse]
61 -+[see_also ncgi]
62 -+[keywords checkbox]
63 -+[keywords checkbutton]
64 -+[keywords form]
65 -+[keywords html]
66 -+[keywords radiobutton]
67 -+[keywords table]
68 - [moddesc {HTML Generation}]
69 - [titledesc {Procedures to generate HTML structures}]
70 - [category {CGI programming}]
71 - [require Tcl 8.2]
72 --[require html [opt 1.4]]
73 -+[require html [opt [vset HTML_VERSION]]]
74 - [description]
75 - [para]
76 -
77 -@@ -26,13 +35,11 @@ for HTML tag parameters.
78 - define an author for the page. The author is noted in a comment in
79 - the HEAD section.
80 -
81 --
82 - [call [cmd ::html::bodyTag] [arg args]]
83 -
84 - Generate a [term body] tag. The tag parameters are taken from [arg args] or
85 - from the body.* attributes define with [cmd ::html::init].
86 -
87 --
88 - [call [cmd ::html::cell] [arg {param value}] [opt [arg tag]]]
89 -
90 - Generate a [term td] (or [term th]) tag, a value, and a closing
91 -@@ -41,13 +48,11 @@ tag parameters come from [arg param] or TD.* attributes defined with
92 - [cmd ::html::init]. This uses [cmd ::html::font] to insert a standard
93 - [term font] tag into the table cell. The [arg tag] argument defaults to "td".
94 -
95 --
96 - [call [cmd ::html::checkbox] [arg {name value}]]
97 -
98 - Generate a [term checkbox] form element with the specified name and value.
99 - This uses [cmd ::html::checkValue].
100 -
101 --
102 - [call [cmd ::html::checkSet] [arg {key sep list}]]
103 -
104 - Generate a set of [term checkbox] form elements and associated labels. The
105 -@@ -56,21 +61,18 @@ This uses [cmd ::html::checkbox]. All the [term checkbox] buttons share the
106 - same [arg key] for their name. The [arg sep] is text used to separate
107 - the elements.
108 -
109 --
110 - [call [cmd ::html::checkValue] [arg name] [opt [arg value]]]
111 -
112 --Generate the "name=[arg name] value=[arg value] for a [term checkbox] form
113 -+Generate the "name=[arg name] value=[arg value]" for a [term checkbox] form
114 - element. If the CGI variable [arg name] has the value [arg value],
115 - then SELECTED is added to the return value. [arg value] defaults to
116 - "1".
117 -
118 --
119 - [call [cmd ::html::closeTag]]
120 -
121 - Pop a tag off the stack created by [cmd ::html::openTag] and generate
122 - the corresponding close tag (e.g., </body>).
123 -
124 --
125 - [call [cmd ::html::default] [arg key] [opt [arg param]]]
126 -
127 - This procedure is used by [cmd ::html::tagParam] to generate the name,
128 -@@ -83,27 +85,23 @@ identified by [arg key]. The [arg key] has the form "tag.parameter"
129 - (e.g., body.bgcolor). Use [cmd ::html::init] to register default
130 - values. [arg param] defaults to the empty string.
131 -
132 --
133 - [call [cmd ::html::description] [arg description]]
134 -
135 - [emph {Side effect only}]. Call this before [cmd ::html::head] to
136 - define a description [term meta] tag for the page. This tag is generated
137 - later in the call to [cmd ::html::head].
138 -
139 --
140 - [call [cmd ::html::end]]
141 -
142 - Pop all open tags from the stack and generate the corresponding close
143 - HTML tags, (e.g., </body></html>).
144 -
145 --
146 - [call [cmd ::html::eval] [arg arg] [opt [arg args]]]
147 -
148 - This procedure is similar to the built-in Tcl [cmd eval] command. The
149 - only difference is that it returns "" so it can be called from an HTML
150 - template file without appending unwanted results.
151 -
152 --
153 - [call [cmd ::html::extractParam] [arg {param key}] [opt [arg varName]]]
154 -
155 - This is a parsing procedure that extracts the value of [arg key] from
156 -@@ -115,13 +113,11 @@ parameter was found in [arg param], otherwise it returns 0. If the
157 - [arg varName] is not specified, then [arg key] is used as the variable
158 - name.
159 -
160 --
161 - [call [cmd ::html::font] [arg args]]
162 -
163 - Generate a standard [term font] tag. The parameters to the tag are taken
164 - from [arg args] and the HTML defaults defined with [cmd ::html::init].
165 -
166 --
167 - [call [cmd ::html::for] [arg {start test next body}]]
168 -
169 - This procedure is similar to the built-in Tcl [cmd for] control
170 -@@ -129,7 +125,6 @@ structure. Rather than evaluating the body, it returns the subst'ed
171 - [arg body]. Each iteration of the loop causes another string to be
172 - concatenated to the result value.
173 -
174 --
175 - [call [cmd ::html::foreach] [arg {varlist1 list1}] [opt [arg {varlist2 list2 ...}]] [arg body]]
176 -
177 - This procedure is similar to the built-in Tcl [cmd foreach] control
178 -@@ -137,7 +132,6 @@ structure. Rather than evaluating the body, it returns the subst'ed
179 - [arg body]. Each iteration of the loop causes another string to be
180 - concatenated to the result value.
181 -
182 --
183 - [call [cmd ::html::formValue] [arg name] [opt [arg defvalue]]]
184 -
185 - Return a name and value pair, where the value is initialized from
186 -@@ -148,20 +142,17 @@ existing CGI data, if any. The result has this form:
187 - name="fred" value="freds value"
188 - }]
189 -
190 --
191 - [call [cmd ::html::getFormInfo] [arg args]]
192 -
193 - Generate hidden fields to capture form values. If [arg args] is
194 - empty, then hidden fields are generated for all CGI values. Otherwise
195 - args is a list of string match patterns for form element names.
196 -
197 --
198 - [call [cmd ::html::getTitle]]
199 -
200 - Return the title string, with out the surrounding [term title] tag,
201 - set with a previous call to [cmd ::html::title].
202 -
203 --
204 - [call [cmd ::html::h] [arg {level string}] [opt [arg param]]]
205 -
206 - Generate a heading (e.g., [term h[var level]]) tag. The [arg string] is nested in the
207 -@@ -191,28 +182,25 @@ Generate an [term h5] tag. See [cmd ::html::h].
208 -
209 - Generate an [term h6] tag. See [cmd ::html::h].
210 -
211 --
212 - [call [cmd ::html::hdrRow] [arg args]]
213 -
214 - Generate a table row, including [term tr] and [term th] tags.
215 - Each value in [arg args] is place into its own table cell.
216 - This uses [cmd ::html::cell].
217 -
218 --
219 - [call [cmd ::html::head] [arg title]]
220 -
221 - Generate the [term head] section that includes the page [term title].
222 - If previous calls have been made to
223 --[cmd ::html::author],
224 --[cmd ::html::keywords],
225 --[cmd ::html::description],
226 -+[cmd ::html::author],
227 -+[cmd ::html::keywords],
228 -+[cmd ::html::description],
229 - or
230 - [cmd ::html::meta]
231 - then additional tags are inserted into the [term head] section.
232 - This leaves an open [term html] tag pushed on the stack with
233 - [cmd ::html::openTag].
234 -
235 --
236 - [call [cmd ::html::headTag] [arg string]]
237 -
238 - Save a tag for inclusion in the [term head] section generated by
239 -@@ -220,13 +208,11 @@ Save a tag for inclusion in the [term head] section generated by
240 - [cmd ::html::head]. The [arg string] is everything in the tag except
241 - the enclosing angle brackets, < >.
242 -
243 --
244 - [call [cmd ::html::html_entities] [arg string]]
245 -
246 - This command replaces all special characters in the [arg string] with
247 - their HTML entities and returns the modified text.
248 -
249 --
250 - [call [cmd ::html::if] [arg {expr1 body1}] [opt "[const elseif] [arg {expr2 body2 ...}]"] [opt "[const else] [arg bodyN]"]]
251 -
252 - This procedure is similar to the built-in Tcl [cmd if] control
253 -@@ -235,7 +221,6 @@ taken, it returns the subst'ed [arg body]. Note that the syntax is
254 - slightly more restrictive than that of the built-in Tcl [cmd if]
255 - control structure.
256 -
257 --
258 - [call [cmd ::html::init] [opt [arg list]]]
259 -
260 - [cmd ::html::init] accepts a Tcl-style name-value list that defines
261 -@@ -243,19 +228,16 @@ values for items with a name of the form "tag.parameter". For
262 - example, a default with key "body.bgcolor" defines the background
263 - color for the [term body] tag.
264 -
265 --
266 - [call [cmd ::html::keywords] [arg args]]
267 -
268 - [emph {Side effect only}]. Call this before [cmd ::html::head] to
269 - define a keyword [term meta] tag for the page. The [term meta] tag
270 - is included in the result of [cmd ::html::head].
271 -
272 --
273 - [call [cmd ::html::mailto] [arg email] [opt [arg subject]]]
274 -
275 - Generate a hypertext link to a mailto: URL.
276 -
277 --
278 - [call [cmd ::html::meta] [arg args]]
279 -
280 - [emph {Side effect only}]. Call this before [cmd ::html::head] to
281 -@@ -264,6 +246,50 @@ value list that is used for the name= and value= parameters for the
282 - [term meta] tag. The [term meta] tag is included in the result of
283 - [cmd ::html::head].
284 -
285 -+[call [cmd ::html::css] [arg href]]
286 -+
287 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
288 -+define a [term link] tag for a linked CSS document. The [arg href]
289 -+value is a HTTP URL to a CSS document. The [term link] tag is included
290 -+in the result of [cmd ::html::head].
291 -+
292 -+[para]
293 -+
294 -+Multiple calls of this command are allowed, enabling the use of
295 -+multiple CSS document references. In other words, the arguments
296 -+of multiple calls are accumulated, and do not overwrite each other.
297 -+
298 -+[call [cmd ::html::css-clear]]
299 -+
300 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
301 -+clear all links to CSS documents.
302 -+[para]
303 -+
304 -+Multiple calls of this command are allowed, doing nothing after the
305 -+first of a sequence with no intervening [cmd ::html::css].
306 -+
307 -+[call [cmd ::html::js] [arg href]]
308 -+
309 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
310 -+define a [term script] tag for a linked JavaScript document. The
311 -+[arg href] is a HTTP URL to a JavaScript document. The [term script]
312 -+tag is included in the result of [cmd ::html::head].
313 -+
314 -+[para]
315 -+
316 -+Multiple calls of this command are allowed, enabling the use of
317 -+multiple JavaScript document references. In other words, the arguments
318 -+of multiple calls are accumulated, and do not overwrite each other.
319 -+
320 -+
321 -+[call [cmd ::html::js-clear]]
322 -+
323 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
324 -+clear all links to JavaScript documents.
325 -+[para]
326 -+
327 -+Multiple calls of this command are allowed, doing nothing after the
328 -+first of a sequence with no intervening [cmd ::html::js].
329 -
330 - [call [cmd ::html::minorList] [arg list] [opt [arg ordered]]]
331 -
332 -@@ -273,20 +299,17 @@ Tcl-style name, value list of labels and urls for the links.
333 - [arg ordered] is a boolean used to choose between an ordered or
334 - unordered list. It defaults to [const false].
335 -
336 --
337 - [call [cmd ::html::minorMenu] [arg list] [opt [arg sep]]]
338 -
339 - Generate a series of hypertext links. The [arg list] is a Tcl-style
340 - name, value list of labels and urls for the links. The [arg sep] is
341 - the text to put between each link. It defaults to " | ".
342 -
343 --
344 - [call [cmd ::html::nl2br] [arg string]]
345 -
346 - This command replaces all line-endings in the [arg string] with a
347 - [term br] tag and returns the modified text.
348 -
349 --
350 - [call [cmd ::html::openTag] [arg tag] [opt [arg param]]]
351 -
352 - Push [arg tag] onto a stack and generate the opening tag for
353 -@@ -295,7 +318,6 @@ stack. The second argument provides any tag arguments, as a
354 - list whose elements are formatted to be in the form
355 - "[var key]=[const value]".
356 -
357 --
358 - [call [cmd ::html::paramRow] [arg list] [opt [arg rparam]] [opt [arg cparam]]]
359 -
360 - Generate a table row, including [term tr] and [term td] tags. Each value in
361 -@@ -306,25 +328,21 @@ Generate a table row, including [term tr] and [term td] tags. Each value in
362 - the [term tr] tag. The value of [arg cparam] is passed to [cmd ::html::cell]
363 - as parameter for the [term td] tags.
364 -
365 --
366 - [call [cmd ::html::passwordInput] [opt [arg name]]]
367 -
368 - Generate an [term input] tag of type [term password]. The [arg name] defaults to
369 - "password".
370 -
371 --
372 - [call [cmd ::html::passwordInputRow] [arg label] [opt [arg name]]]
373 -
374 - Format a table row containing a label and an [term input] tag of type
375 - [term password]. The [arg name] defaults to "password".
376 -
377 --
378 - [call [cmd ::html::quoteFormValue] [arg value]]
379 -
380 - Quote special characters in [arg value] by replacing them with HTML
381 - entities for quotes, ampersand, and angle brackets.
382 -
383 --
384 - [call [cmd ::html::radioSet] [arg {key sep list}]]
385 -
386 - Generate a set of [term input] tags of type [term radio] and an associated text
387 -@@ -332,14 +350,12 @@ label. All the radio buttons share the same [arg key] for their name.
388 - The [arg sep] is text used to separate the elements. The [arg list]
389 - is a Tcl-style label, value list.
390 -
391 --
392 - [call [cmd ::html::radioValue] [arg {name value}]]
393 -
394 --Generate the "name=[arg name] value=[arg value] for a [term radio] form
395 -+Generate the "name=[arg name] value=[arg value]" for a [term radio] form
396 - element. If the CGI variable [arg name] has the value [arg value],
397 - then SELECTED is added to the return value.
398 -
399 --
400 - [call [cmd ::html::refresh] [arg {seconds url}]]
401 -
402 - Set up a refresh [term meta] tag. Call this before [cmd ::html::head] and the
403 -@@ -347,7 +363,6 @@ HEAD section will contain a [term meta] tag that causes the document to
404 - refresh in [arg seconds] seconds. The [arg url] is optional. If
405 - specified, it specifies a new page to load after the refresh interval.
406 -
407 --
408 - [call [cmd ::html::row] [arg args]]
409 -
410 - Generate a table row, including [term tr] and [term td] tags. Each value in
411 -@@ -355,14 +370,12 @@ Generate a table row, including [term tr] and [term td] tags. Each value in
412 - [cmd ::html::cell]. Ignores any default information set up via
413 - [cmd ::html::init].
414 -
415 --
416 - [call [cmd ::html::select] [arg {name param choices}] [opt [arg current]]]
417 -
418 - Generate a [term select] form element and nested [term option] tags. The [arg name]
419 - and [arg param] are used to generate the [term select] tag. The [arg choices]
420 - list is a Tcl-style name, value list.
421 -
422 --
423 - [call [cmd ::html::selectPlain] [arg {name param choices}] [opt [arg current]]]
424 -
425 - Like [cmd ::html::select] except that [arg choices] is a Tcl list of
426 -@@ -376,12 +389,10 @@ main difference is that it returns "" so it can be called from an HTML
427 - template file without appending unwanted results. The other
428 - difference is that it must take two arguments.
429 -
430 --
431 - [call [cmd ::html::submit] [arg label] [opt [arg name]]]
432 -
433 - Generate an [term input] tag of type [term submit]. [arg name] defaults to "submit".
434 -
435 --
436 - [call [cmd ::html::tableFromArray] [arg arrname] [opt [arg param]] [opt [arg pat]]]
437 -
438 - Generate a two-column [term table] and nested rows to display a Tcl array. The
439 -@@ -404,7 +415,6 @@ pre-formatted string.
440 -
441 - Generate a [term textarea] tag wrapped around its current values.
442 -
443 --
444 - [call [cmd ::html::textInput] [arg {name value args}]]
445 -
446 - Generate an [term input] form tag with type [term text]. This uses
447 -@@ -412,7 +422,6 @@ Generate an [term input] form tag with type [term text]. This uses
448 - [cmd ::html::formValue]. The args is any additional tag attributes
449 - you want to put into the [term input] tag.
450 -
451 --
452 - [call [cmd ::html::textInputRow] [arg {label name value args}]]
453 -
454 - Generate an [term input] form tag with type [term text] formatted into a table row
455 -@@ -431,7 +440,6 @@ define the [term title] for a page.
456 - This returns 1 if the named variable either does not exist or has the
457 - empty string for its value.
458 -
459 --
460 - [call [cmd ::html::while] [arg {test body}]]
461 -
462 - This procedure is similar to the built-in Tcl [cmd while] control
463 -@@ -439,20 +447,30 @@ structure. Rather than evaluating the body, it returns the subst'ed
464 - [arg body]. Each iteration of the loop causes another string to be
465 - concatenated to the result value.
466 -
467 --[list_end]
468 --
469 --[section {BUGS, IDEAS, FEEDBACK}]
470 --
471 --This document, and the package it describes, will undoubtedly contain
472 --bugs and other problems.
473 -+[call [cmd ::html::doctype] [arg id]]
474 -
475 --Please report such in the category [emph html] of the
476 --[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].
477 -+This procedure can be used to build the standard DOCTYPE
478 -+declaration string. It will return the standard declaration
479 -+string for the id, or throw an error if the id is not known.
480 -+The following id's are defined:
481 -
482 --Please also report any ideas for enhancements you may have for either
483 --package and/or documentation.
484 -+[list_begin enumerated]
485 -+[enum] HTML32
486 -+[enum] HTML40
487 -+[enum] HTML40T
488 -+[enum] HTML40F
489 -+[enum] HTML401
490 -+[enum] HTML401T
491 -+[enum] HTML401F
492 -+[enum] XHTML10S
493 -+[enum] XHTML10T
494 -+[enum] XHTML10F
495 -+[enum] XHTML11
496 -+[enum] XHTMLB
497 -+[list_end]
498 -
499 -+[list_end]
500 -
501 --[see_also ncgi htmlparse]
502 --[keywords html form table checkbox radiobutton checkbutton]
503 -+[vset CATEGORY html]
504 -+[include ../doctools2base/include/feedback.inc]
505 - [manpage_end]
506 -diff --git a/modules/html/html.tcl b/modules/html/html.tcl
507 -index 77e517e..3c0c443 100644
508 ---- a/modules/html/html.tcl
509 -+++ b/modules/html/html.tcl
510 -@@ -15,7 +15,7 @@
511 -
512 - package require Tcl 8.2
513 - package require ncgi
514 --package provide html 1.4
515 -+package provide html 1.4.4
516 -
517 - namespace eval ::html {
518 -
519 -@@ -510,7 +510,7 @@ proc ::html::refresh {content {url {}}} {
520 - ::if {[string length $url]} {
521 - append html "; url=$url"
522 - }
523 -- append html "\">\n"
524 -+ append html "\">"
525 - lappend page(meta) $html
526 - return ""
527 - }
528 -@@ -912,7 +912,7 @@ proc ::html::selectPlain {name param choices {current {}}} {
529 - # The html fragment
530 -
531 - proc ::html::textarea {name {param {}} {current {}}} {
532 -- ::set value [ncgi::value $name $current]
533 -+ ::set value [quoteFormValue [ncgi::value $name $current]]
534 - return "<[string trimright \
535 - "textarea name=\"$name\"\
536 - [tagParam textarea $param]"]>$value</textarea>\n"
537 -@@ -1405,7 +1405,7 @@ proc ::html::html_entities {s} {
538 - # The text with <br> in place of line-endings.
539 -
540 - proc ::html::nl2br {s} {
541 -- return [string map [list \n\r <br> \n <br> \r <br>] $s]
542 -+ return [string map [list \n\r <br> \r\n <br> \n <br> \r <br>] $s]
543 - }
544 -
545 - # ::html::doctype
546 -@@ -1419,9 +1419,10 @@ proc ::html::nl2br {s} {
547 -
548 - proc ::html::doctype {arg} {
549 - variable doctypes
550 -- set code [string toupper $arg]
551 -- if {![info exists doctypes($code)]} {
552 -- return -code error "Unknown doctype \"$arg\""
553 -+ ::set code [string toupper $arg]
554 -+ ::if {![info exists doctypes($code)]} {
555 -+ return -code error -errorcode {HTML DOCTYPE BAD} \
556 -+ "Unknown doctype \"$arg\""
557 - }
558 - return $doctypes($code)
559 - }
560 -@@ -1451,12 +1452,26 @@ namespace eval ::html {
561 - # href The location of the css file to include the filename and path
562 - #
563 - # Results:
564 --# HTML for the section
565 -+# None.
566 -
567 - proc ::html::css {href} {
568 - variable page
569 -- set page(css) \
570 -- "<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">\n"
571 -+ lappend page(css) "<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">"
572 -+ return
573 -+}
574 -+
575 -+# ::html::css-clear
576 -+# Drop all text/css references.
577 -+#
578 -+# Arguments:
579 -+# None.
580 -+#
581 -+# Results:
582 -+# None.
583 -+
584 -+proc ::html::css-clear {} {
585 -+ variable page
586 -+ catch { unset page(css) }
587 - return
588 - }
589 -
590 -@@ -1467,11 +1482,25 @@ proc ::html::css {href} {
591 - # href The location of the javascript file to include the filename and path
592 - #
593 - # Results:
594 --# HTML for the section
595 -+# None.
596 -
597 - proc ::html::js {href} {
598 - variable page
599 -- set page(js) \
600 -- "<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>\n"
601 -+ lappend page(js) "<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>"
602 -+ return
603 -+}
604 -+
605 -+# ::html::js-clear
606 -+# Drop all text/javascript references.
607 -+#
608 -+# Arguments:
609 -+# None.
610 -+#
611 -+# Results:
612 -+# None.
613 -+
614 -+proc ::html::js-clear {} {
615 -+ variable page
616 -+ catch { unset page(js) }
617 - return
618 - }
619 -diff --git a/modules/html/html.test b/modules/html/html.test
620 -index 7a03c54..6646fb6 100644
621 ---- a/modules/html/html.test
622 -+++ b/modules/html/html.test
623 -@@ -17,8 +17,8 @@ source [file join \
624 - [file dirname [file dirname [file join [pwd] [info script]]]] \
625 - devtools testutilities.tcl]
626 -
627 --testsNeedTcl 8.2
628 --testsNeedTcltest 1.0
629 -+testsNeedTcl 8.4
630 -+testsNeedTcltest 2.0
631 -
632 - testing {
633 - useLocal html.tcl html
634 -@@ -26,45 +26,46 @@ testing {
635 -
636 - # -------------------------------------------------------------------------
637 -
638 --test html-1.1 {html::init} {
639 -+test html-1.1 {html::init} -body {
640 - html::init
641 -- list [array exists html::defaults] \
642 -- [array size html::defaults] \
643 -- [info exists html::page]
644 --} {1 0 0}
645 -+ list \
646 -+ [array exists html::defaults] \
647 -+ [array size html::defaults] \
648 -+ [info exists html::page]
649 -+} -result {1 0 0}
650 -
651 --test html-1.2 {html::init} {
652 -+test html-1.2 {html::init} -body {
653 - html::init {
654 - font.face arial
655 - body.bgcolor white
656 - body.text black
657 - }
658 - lsort [array names html::defaults]
659 --} {body.bgcolor body.text font.face}
660 -+} -result {body.bgcolor body.text font.face}
661 -
662 --test html-1.3 {html::init} {
663 -- catch {html::init wrong num args}
664 --} 1
665 -+test html-1.3 {html::init, too many args} -body {
666 -+ html::init wrong num args
667 -+} -returnCodes error -result {wrong # args: should be "html::init ?nvlist?"}
668 -
669 --test html-1.4 {html::init} {
670 -- catch {html::init {wrong num args}}
671 --} 1
672 -+test html-1.4 {html::init, bad arg, odd-length list} -body {
673 -+ html::init {wrong num args}
674 -+} -returnCodes error -result {list must have an even number of elements}
675 -
676 --test html-2.1 {html::head} {
677 -- catch {html::head}
678 --} 1
679 -+test html-2.1 {html::head, not enough args} -body {
680 -+ html::head
681 -+} -returnCodes error -result {wrong # args: should be "html::head title"}
682 -
683 --test html-2.2 {html::head} {
684 -+test html-2.2 {html::head} -body {
685 - html::head "The Title"
686 --} "<html><head>\n\t<title>The Title</title>\n</head>\n"
687 -+} -result "<html><head>\n\t<title>The Title</title>\n</head>\n"
688 -
689 --test html-2.3 {html::head} {
690 -+test html-2.3 {html::head} -body {
691 - html::description "The Description"
692 - html::keywords key word
693 - html::author "Cathy Coder"
694 - html::meta metakey metavalue
695 - html::head "The Title"
696 --} {<html><head>
697 -+} -result {<html><head>
698 - <title>The Title</title>
699 - <!-- Cathy Coder -->
700 - <meta name="description" content="The Description">
701 -@@ -73,24 +74,24 @@ test html-2.3 {html::head} {
702 - </head>
703 - }
704 -
705 --test html-3.1 {html::title} {
706 -- catch html::title
707 --} 1
708 -+test html-3.1 {html::title, not enough args} -body {
709 -+ html::title
710 -+} -returnCodes error -result {wrong # args: should be "html::title title"}
711 -
712 --test html-3.2 {html::title} {
713 -+test html-3.2 {html::title} -body {
714 - html::title "blah blah"
715 --} "<title>blah blah</title>\n"
716 -+} -result "<title>blah blah</title>\n"
717 -
718 --test html-4.1 {html::getTitle} {
719 -+test html-4.1 {html::getTitle} -body {
720 - html::init
721 - html::getTitle
722 --} ""
723 -+} -result ""
724 -
725 --test html-4.2 {html::getTitle} {
726 -+test html-4.2 {html::getTitle} -body {
727 - html::init
728 - html::title "blah blah"
729 - html::getTitle
730 --} {blah blah}
731 -+} -result {blah blah}
732 -
733 - test html-5.1 {html::meta} {
734 - html::init
735 -@@ -453,6 +454,18 @@ test html-23.2 {html::textarea} {
736 - } {<textarea name="info" cols="50" rows="8">The textarea value.</textarea>
737 - }
738 -
739 -+test html-23.3 {html::textarea, dangerous input} {
740 -+ html::init {
741 -+ textarea.cols 50
742 -+ textarea.rows 8
743 -+ }
744 -+ ncgi::reset info=[ncgi::encode "</textarea><script>alert(1)</script>"]
745 -+ ncgi::parse
746 -+ html::textarea info
747 -+} {<textarea name="info" cols="50" rows="8">&lt;/textarea&gt;&lt;script&gt;alert(1)&lt;/script&gt;</textarea>
748 -+}
749 -+
750 -+
751 - test html-24.1 {html::submit} {
752 - catch {html::submit}
753 - } {1}
754 -@@ -516,7 +529,6 @@ test html-26.4 {html::refresh} {
755 - } {<html><head>
756 - <title>title</title>
757 - <meta http-equiv="Refresh" content="4">
758 --
759 - </head>
760 - }
761 - test html-26.5 {html::refresh} {
762 -@@ -526,7 +538,6 @@ test html-26.5 {html::refresh} {
763 - } {<html><head>
764 - <title>title</title>
765 - <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
766 --
767 - </head>
768 - }
769 -
770 -@@ -794,6 +805,7 @@ test html-32.1 {single argument} {
771 - set result [html::eval {set x [format 22]}]
772 - list $result $x
773 - } {{} 22}
774 -+
775 - test html-32.2 {multiple arguments} {
776 - set a {$b}
777 - set b xyzzy
778 -@@ -801,38 +813,146 @@ test html-32.2 {multiple arguments} {
779 - set result [html::eval {set x [eval format $a]}]
780 - list $result $x
781 - } {{} xyzzy}
782 -+
783 - test html-32.3 {single argument} {
784 - set x [list]
785 - set y 1
786 - set result [html::eval lappend x a b c d {$y} e f g]
787 - list $result $x
788 - } {{} {a b c d 1 e f g}}
789 --test html-32.4 {error: not enough arguments} {catch html::eval} 1
790 --test html-32.5 {error: not enough arguments} {
791 -- catch html::eval msg
792 -- set msg
793 --} {wrong # args: should be "uplevel ?level? command ?arg ...?"}
794 --test html-32.6 {error in eval'ed command} {
795 -- catch {html::eval {error "test error"}}
796 --} 1
797 --test html-32.7 {error in eval'ed command} {
798 -- catch {html::eval {error "test error"}} msg
799 -- set msg
800 --} {test error}
801 -
802 -+test html-32.4 {error: not enough arguments} -body {
803 -+ html::eval
804 -+} -returnCodes error -result {wrong # args: should be "uplevel ?level? command ?arg ...?"}
805 -
806 --test html-33.0 {html::font} {
807 -+test html-32.6 {error in eval'ed command} -body {
808 -+ html::eval {error "test error"}
809 -+} -returnCodes error -result {test error}
810 -+
811 -+test html-33.0 {html::font} -body {
812 - html::font
813 --} {}
814 -+} -result {}
815 -
816 --test html-33.1 {html::font} {
817 -+test html-33.1 {html::font} -body {
818 - html::font size=18
819 --} {<font size=18>}
820 -+} -result {<font size=18>}
821 -
822 --
823 --test html-34.0 {html::nl2br} {
824 -+test html-34.0 {html::nl2br} -body {
825 - html::nl2br "a\n\rb\nc\rd"
826 --} {a<br>b<br>c<br>d}
827 -+} -result {a<br>b<br>c<br>d}
828 -
829 -+test html-34.1 {html::nl2br, ticket 1742078} -body {
830 -+ html::nl2br "a\r\nb"
831 -+} -result {a<br>b}
832 -
833 -+# -------------------------------------------------------------------------
834 -+
835 -+test html-tkt3439702-35.0 {html::css, not enough arguments} -body {
836 -+ html::css
837 -+} -returnCodes error -result {wrong # args: should be "html::css href"}
838 -+
839 -+test html-tkt3439702-35.1 {html::css, too many arguments} -body {
840 -+ html::css REF X
841 -+} -returnCodes error -result {wrong # args: should be "html::css href"}
842 -+
843 -+test html-tkt3439702-35.2 {html::css, single ref} -setup {
844 -+ html::css-clear
845 -+} -body {
846 -+ html::css "http://test.css"
847 -+ string trim [html::head T]
848 -+} -cleanup {
849 -+ html::css-clear
850 -+} -result "<html><head>\n\t<title>T</title>\n\t<meta http-equiv=\"Refresh\" content=\"9; url=http://www.scriptics.com\">\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"http://test.css\">\n</head>"
851 -+
852 -+test html-tkt3439702-35.3 {html::css, multiple ref} -setup {
853 -+ html::css-clear
854 -+} -body {
855 -+ html::css "http://test1.css"
856 -+ html::css "http://test2.css"
857 -+ string trim [html::head T]
858 -+} -cleanup {
859 -+ html::css-clear
860 -+} -result {<html><head>
861 -+ <title>T</title>
862 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
863 -+ <link rel="stylesheet" type="text/css" href="http://test1.css">
864 -+ <link rel="stylesheet" type="text/css" href="http://test2.css">
865 -+</head>}
866 -+
867 -+# -------------------------------------------------------------------------
868 -+
869 -+test html-tkt3439702-36.0 {html::js, not enough arguments} -body {
870 -+ html::js
871 -+} -returnCodes error -result {wrong # args: should be "html::js href"}
872 -+
873 -+test html-tkt3439702-36.1 {html::js, too many arguments} -body {
874 -+ html::js REF X
875 -+} -returnCodes error -result {wrong # args: should be "html::js href"}
876 -+
877 -+test html-tkt3439702-36.2 {html::js, single ref} -setup {
878 -+ html::js-clear
879 -+} -body {
880 -+ html::js "http://test.js"
881 -+ string trim [html::head T]
882 -+} -cleanup {
883 -+ html::js-clear
884 -+} -result {<html><head>
885 -+ <title>T</title>
886 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
887 -+ <script language="javascript" type="text/javascript" src="http://test.js"></script>
888 -+</head>}
889 -+
890 -+test html-tkt3439702-36.3 {html::js, multiple ref} -setup {
891 -+ html::js-clear
892 -+} -body {
893 -+ html::js "http://test1.js"
894 -+ html::js "http://test2.js"
895 -+ string trim [html::head T]
896 -+} -cleanup {
897 -+ html::js-clear
898 -+} -result {<html><head>
899 -+ <title>T</title>
900 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
901 -+ <script language="javascript" type="text/javascript" src="http://test1.js"></script>
902 -+ <script language="javascript" type="text/javascript" src="http://test2.js"></script>
903 -+</head>}
904 -+
905 -+test html-tkt3439702-37.0 {html::js, html::css, mixed} -setup {
906 -+ html::css-clear
907 -+ html::js-clear
908 -+} -body {
909 -+ html::css "http://test.css"
910 -+ html::js "http://test.js"
911 -+ string trim [html::head T]
912 -+} -cleanup {
913 -+ html::js-clear
914 -+ html::css-clear
915 -+} -result {<html><head>
916 -+ <title>T</title>
917 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
918 -+ <link rel="stylesheet" type="text/css" href="http://test.css">
919 -+ <script language="javascript" type="text/javascript" src="http://test.js"></script>
920 -+</head>}
921 -+
922 -+# -------------------------------------------------------------------------
923 -+# TODO: html::css-clear, html::js-clear
924 -+
925 -+
926 -+test html-tktafe4366e2e-38.0 {html::doctype, not enough args} -body {
927 -+ html::doctype
928 -+} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
929 -+
930 -+test html-tktafe4366e2e-38.1 {html::doctype, too many args} -body {
931 -+ html::doctype HTML401T X
932 -+} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
933 -+
934 -+test html-tktafe4366e2e-38.2 {html::doctype, unknown type} -body {
935 -+ html::doctype HTML401TXXX
936 -+} -returnCodes error -result {Unknown doctype "HTML401TXXX"}
937 -+
938 -+test html-tktafe4366e2e-38.3 {html::doctype} -body {
939 -+ html::doctype HTML401T
940 -+} -result {<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">}
941 -+
942 -+# -------------------------------------------------------------------------
943 - testsuiteCleanup
944 -diff --git a/modules/html/pkgIndex.tcl b/modules/html/pkgIndex.tcl
945 -index 88a71b2..9d91097 100644
946 ---- a/modules/html/pkgIndex.tcl
947 -+++ b/modules/html/pkgIndex.tcl
948 -@@ -1,2 +1,2 @@
949 - if {![package vsatisfies [package provide Tcl] 8.2]} {return}
950 --package ifneeded html 1.4 [list source [file join $dir html.tcl]]
951 -+package ifneeded html 1.4.4 [list source [file join $dir html.tcl]]
952
953 diff --git a/dev-tcltk/tcllib/files/tcllib-1.15-tcl8.6-test.patch b/dev-tcltk/tcllib/files/tcllib-1.15-tcl8.6-test.patch
954 deleted file mode 100644
955 index 2256c5a50a0..00000000000
956 --- a/dev-tcltk/tcllib/files/tcllib-1.15-tcl8.6-test.patch
957 +++ /dev/null
958 @@ -1,411 +0,0 @@
959 - modules/clock/iso8601.test | 5 ++---
960 - modules/doctools/mpformats/_nroff.tcl | 18 ++++++++++--------
961 - modules/doctools/mpformats/fmt.nroff | 4 ++--
962 - modules/doctools/tests/nroff/00 | 8 ++++----
963 - modules/doctools/tests/nroff/01 | 4 ++--
964 - modules/doctools/tests/nroff/02 | 10 +++++-----
965 - modules/doctools/tests/nroff/03 | 16 ++++++++--------
966 - modules/doctools/tests/nroff/04 | 8 ++++----
967 - modules/doctools/tests/nroff/05 | 8 ++++----
968 - modules/doctools/tests/nroff/06 | 8 ++++----
969 - modules/doctools/tests/nroff/07 | 8 ++++----
970 - modules/doctools/tests/nroff/08 | 18 +++++++++---------
971 - support/devel/sak/validate/syntax.tcl | 4 +++-
972 - support/devel/sak/validate/testsuites.tcl | 4 +++-
973 - 14 files changed, 64 insertions(+), 59 deletions(-)
974 -
975 -diff --git a/modules/clock/iso8601.test b/modules/clock/iso8601.test
976 -index 85d6416..6fce938 100644
977 ---- a/modules/clock/iso8601.test
978 -+++ b/modules/clock/iso8601.test
979 -@@ -40,9 +40,8 @@ test clock-iso8601-2.0 {parse_date, bad input} -body {
980 - } -returnCodes error -result {not an iso8601 date string}
981 -
982 - test clock-iso8601-2.1 {parse_date} -body {
983 -- clock::iso8601 parse_date 1994-11-05
984 -- # It is unclear if this is influenced by TZ.
985 --} -result 784022400
986 -+ clock format [clock::iso8601 parse_date 1994-11-05] -format %D
987 -+} -result 11/05/1994
988 -
989 - # -------------------------------------------------------------------------
990 -
991 -diff --git a/modules/doctools/mpformats/_nroff.tcl b/modules/doctools/mpformats/_nroff.tcl
992 -index be73a02..7669d07 100644
993 ---- a/modules/doctools/mpformats/_nroff.tcl
994 -+++ b/modules/doctools/mpformats/_nroff.tcl
995 -@@ -15,7 +15,7 @@
996 -
997 -
998 - proc nr_lp {} {return \n\1.LP}
999 --proc nr_ta {{text {}}} {return ".ta$text"}
1000 -+proc nr_ta {{text {}}} {return "\1.ta$text"}
1001 - proc nr_bld {} {return \1\\fB}
1002 - proc nr_bldt {t} {return "\n\1.B $t\n"}
1003 - proc nr_ul {} {return \1\\fI}
1004 -@@ -75,6 +75,7 @@ set finalMap [list \
1005 - "\1\\" "\\" \
1006 - "\1'" "'" \
1007 - "\1." "." \
1008 -+ "." "\\&." \
1009 - "\\" "\\\\"]
1010 - global textMap
1011 - set textMap [list "\\" "\\\\"]
1012 -@@ -103,8 +104,8 @@ proc nroff_postprocess {nroff} {
1013 - # - Exceptions to the above: Keep empty lines and leading
1014 - # whitespace when in verbatim sections (no-fill-mode)
1015 -
1016 -- set nfMode [list .nf .CS] ; # commands which start no-fill mode
1017 -- set fiMode [list .fi .CE] ; # commands which terminate no-fill mode
1018 -+ set nfMode [list \1.nf \1.CS] ; # commands which start no-fill mode
1019 -+ set fiMode [list \1.fi \1.CE] ; # commands which terminate no-fill mode
1020 - set lines [list] ; # Result buffer
1021 - set verbatim 0 ; # Automaton mode/state
1022 -
1023 -@@ -139,7 +140,7 @@ proc nroff_postprocess {nroff} {
1024 - set lines [lreplace $lines end end]
1025 - set line "$last $line"
1026 - }
1027 -- } elseif {[string match {['.]*} $line]} {
1028 -+ } elseif {[string match {[']*} $line]} {
1029 - # Apostrophes or periods at the beginning of a line have to
1030 - # quoted to prevent misinterpretation as comments or directives.
1031 - # The true comments and directive are quoted with \1
1032 -@@ -166,10 +167,11 @@ proc nroff_postprocess {nroff} {
1033 - # Remove superfluous .IP commands (empty paragraph). The first
1034 - # identity mapping is there to avoid smashing a man macro
1035 - # definition.
1036 -- set lines [string map [list \
1037 -- \n\1.IP\n\1..\n \n\1.IP\n\1..\n \
1038 -- \n\1.IP\n\1. \n\1.] \
1039 -- $lines]
1040 -+
1041 -+ lappend map \n\1.IP\n\1.\1.\n \n\1.IP\n\1.\1.\n
1042 -+ lappend map \n\1.IP\n\1. \n\1.
1043 -+
1044 -+ set lines [string map $map $lines]
1045 -
1046 - # Return the modified result buffer
1047 - return [string map $finalMap $lines]
1048 -diff --git a/modules/doctools/mpformats/fmt.nroff b/modules/doctools/mpformats/fmt.nroff
1049 -index e844dbf..5230688 100644
1050 ---- a/modules/doctools/mpformats/fmt.nroff
1051 -+++ b/modules/doctools/mpformats/fmt.nroff
1052 -@@ -269,11 +269,11 @@ proc fmt_image {text {label {}}} {
1053 -
1054 - set img [dt_imgdata $text {pic}]
1055 - if {$img ne {}} {
1056 -- return \n.PS\n$img\n.PE\n
1057 -+ return \n\1.PS\n$img\n\1.PE\n
1058 - }
1059 - set img [dt_imgdata $text {txt}]
1060 - if {$img ne {}} {
1061 -- return \n.PS\n.nf\n$img\n.fi\n.PE\n
1062 -+ return \n\1.PS\n\1.nf\n$img\n\1.fi\n\1.PE\n
1063 - }
1064 - if {$label eq {}} {
1065 - return "IMAGE: $text"
1066 -diff --git a/modules/doctools/tests/nroff/00 b/modules/doctools/tests/nroff/00
1067 -index 8ac0ebf..8f68ee1 100644
1068 ---- a/modules/doctools/tests/nroff/00
1069 -+++ b/modules/doctools/tests/nroff/00
1070 -@@ -1,15 +1,15 @@
1071 - '\"
1072 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1073 --'\" Copyright (c) .COPYRIGHT.
1074 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1075 -+'\" Copyright (c) \&.COPYRIGHT\&.
1076 - '\"
1077 - .so man.macros
1078 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1079 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1080 - .BS
1081 - .SH NAME
1082 - TEST \-
1083 - .SH DESCRIPTION
1084 - .SH COPYRIGHT
1085 - .nf
1086 --Copyright (c) .COPYRIGHT.
1087 -+Copyright (c) \&.COPYRIGHT\&.
1088 -
1089 - .fi
1090 -\ No newline at end of file
1091 -diff --git a/modules/doctools/tests/nroff/01 b/modules/doctools/tests/nroff/01
1092 -index 3a4563f..588894a 100644
1093 ---- a/modules/doctools/tests/nroff/01
1094 -+++ b/modules/doctools/tests/nroff/01
1095 -@@ -1,9 +1,9 @@
1096 - '\"
1097 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1098 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1099 - '\" Copyright (c) **Copyright**
1100 - '\"
1101 - .so man.macros
1102 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1103 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1104 - .BS
1105 - .SH NAME
1106 - TEST \-
1107 -diff --git a/modules/doctools/tests/nroff/02 b/modules/doctools/tests/nroff/02
1108 -index 89d6cb7..49fbf18 100644
1109 ---- a/modules/doctools/tests/nroff/02
1110 -+++ b/modules/doctools/tests/nroff/02
1111 -@@ -1,12 +1,12 @@
1112 - '\"
1113 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1114 --'\" Copyright (c) .COPYRIGHT.
1115 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1116 -+'\" Copyright (c) \&.COPYRIGHT\&.
1117 - '\"
1118 - .so man.macros
1119 --.TH "TEST" z 3.14.15.926 .MODULE. "..THE_MODULE.."
1120 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. "\&.\&.THE_MODULE\&.\&."
1121 - .BS
1122 - .SH NAME
1123 --TEST \- ..THE_TITLE..
1124 -+TEST \- \&.\&.THE_TITLE\&.\&.
1125 - .SH SYNOPSIS
1126 - package require \fBAAA \fR
1127 - .sp
1128 -@@ -20,6 +20,6 @@ ELSE, OTHER
1129 - KEYA, KEYZ
1130 - .SH COPYRIGHT
1131 - .nf
1132 --Copyright (c) .COPYRIGHT.
1133 -+Copyright (c) \&.COPYRIGHT\&.
1134 -
1135 - .fi
1136 -\ No newline at end of file
1137 -diff --git a/modules/doctools/tests/nroff/03 b/modules/doctools/tests/nroff/03
1138 -index eb0bdd3..6393ecb 100644
1139 ---- a/modules/doctools/tests/nroff/03
1140 -+++ b/modules/doctools/tests/nroff/03
1141 -@@ -1,9 +1,9 @@
1142 - '\"
1143 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1144 --'\" Copyright (c) .COPYRIGHT.
1145 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1146 -+'\" Copyright (c) \&.COPYRIGHT\&.
1147 - '\"
1148 - .so man.macros
1149 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1150 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1151 - .BS
1152 - .SH NAME
1153 - TEST \-
1154 -@@ -12,18 +12,18 @@ TEST \-
1155 - 1
1156 - .SH BBB
1157 - 22
1158 --.SS BBB.CCC
1159 -+.SS BBB\&.CCC
1160 - 333
1161 --.SS BBB.DDD
1162 -+.SS BBB\&.DDD
1163 - 4444
1164 - .SH EEE
1165 - 5555
1166 - .PP
1167 --At \fBAaA\fR.
1168 -+At \fBAaA\fR\&.
1169 - .PP
1170 --At \fB__undefined__\fR.
1171 -+At \fB__undefined__\fR\&.
1172 - .SH COPYRIGHT
1173 - .nf
1174 --Copyright (c) .COPYRIGHT.
1175 -+Copyright (c) \&.COPYRIGHT\&.
1176 -
1177 - .fi
1178 -\ No newline at end of file
1179 -diff --git a/modules/doctools/tests/nroff/04 b/modules/doctools/tests/nroff/04
1180 -index ee22d7a..27aa037 100644
1181 ---- a/modules/doctools/tests/nroff/04
1182 -+++ b/modules/doctools/tests/nroff/04
1183 -@@ -1,9 +1,9 @@
1184 - '\"
1185 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1186 --'\" Copyright (c) .COPYRIGHT.
1187 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1188 -+'\" Copyright (c) \&.COPYRIGHT\&.
1189 - '\"
1190 - .so man.macros
1191 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1192 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1193 - .BS
1194 - .SH NAME
1195 - TEST \-
1196 -@@ -27,6 +27,6 @@ Next Line
1197 - FERTIG
1198 - .SH COPYRIGHT
1199 - .nf
1200 --Copyright (c) .COPYRIGHT.
1201 -+Copyright (c) \&.COPYRIGHT\&.
1202 -
1203 - .fi
1204 -\ No newline at end of file
1205 -diff --git a/modules/doctools/tests/nroff/05 b/modules/doctools/tests/nroff/05
1206 -index c25c179..3df0180 100644
1207 ---- a/modules/doctools/tests/nroff/05
1208 -+++ b/modules/doctools/tests/nroff/05
1209 -@@ -1,9 +1,9 @@
1210 - '\"
1211 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1212 --'\" Copyright (c) .COPYRIGHT.
1213 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1214 -+'\" Copyright (c) \&.COPYRIGHT\&.
1215 - '\"
1216 - .so man.macros
1217 --.TH "BASIC" a 5 .MODULE. ""
1218 -+.TH "BASIC" a 5 \&.MODULE\&. ""
1219 - .BS
1220 - .SH NAME
1221 - BASIC \-
1222 -@@ -91,6 +91,6 @@ caramel
1223 - KO
1224 - .SH COPYRIGHT
1225 - .nf
1226 --Copyright (c) .COPYRIGHT.
1227 -+Copyright (c) \&.COPYRIGHT\&.
1228 -
1229 - .fi
1230 -\ No newline at end of file
1231 -diff --git a/modules/doctools/tests/nroff/06 b/modules/doctools/tests/nroff/06
1232 -index e7fee7c..10fed25 100644
1233 ---- a/modules/doctools/tests/nroff/06
1234 -+++ b/modules/doctools/tests/nroff/06
1235 -@@ -1,9 +1,9 @@
1236 - '\"
1237 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1238 --'\" Copyright (c) .COPYRIGHT.
1239 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1240 -+'\" Copyright (c) \&.COPYRIGHT\&.
1241 - '\"
1242 - .so man.macros
1243 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1244 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1245 - .BS
1246 - .SH NAME
1247 - TEST \-
1248 -@@ -50,6 +50,6 @@ c
1249 - .PP
1250 - .SH COPYRIGHT
1251 - .nf
1252 --Copyright (c) .COPYRIGHT.
1253 -+Copyright (c) \&.COPYRIGHT\&.
1254 -
1255 - .fi
1256 -\ No newline at end of file
1257 -diff --git a/modules/doctools/tests/nroff/07 b/modules/doctools/tests/nroff/07
1258 -index 696a715..08ff9ee 100644
1259 ---- a/modules/doctools/tests/nroff/07
1260 -+++ b/modules/doctools/tests/nroff/07
1261 -@@ -1,9 +1,9 @@
1262 - '\"
1263 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1264 --'\" Copyright (c) .COPYRIGHT.
1265 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1266 -+'\" Copyright (c) \&.COPYRIGHT\&.
1267 - '\"
1268 - .so man.macros
1269 --.TH "TEST" z 3.14.15.926 .MODULE. ""
1270 -+.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
1271 - .BS
1272 - .SH NAME
1273 - TEST \-
1274 -@@ -40,6 +40,6 @@ a
1275 - .PP
1276 - .SH COPYRIGHT
1277 - .nf
1278 --Copyright (c) .COPYRIGHT.
1279 -+Copyright (c) \&.COPYRIGHT\&.
1280 -
1281 - .fi
1282 -\ No newline at end of file
1283 -diff --git a/modules/doctools/tests/nroff/08 b/modules/doctools/tests/nroff/08
1284 -index b1bc4ea..50cecb6 100644
1285 ---- a/modules/doctools/tests/nroff/08
1286 -+++ b/modules/doctools/tests/nroff/08
1287 -@@ -1,12 +1,12 @@
1288 - '\"
1289 --'\" Generated from file '.FILE.' by tcllib/doctools with format 'nroff'
1290 -+'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
1291 - '\" Copyright (c) **Copyright**
1292 - '\"
1293 - .so man.macros
1294 --.TH "ALL" a 5 .MODULE. "..THE_MODULE.."
1295 -+.TH "ALL" a 5 \&.MODULE\&. "\&.\&.THE_MODULE\&.\&."
1296 - .BS
1297 - .SH NAME
1298 --ALL \- ..THE_TITLE..
1299 -+ALL \- \&.\&.THE_TITLE\&.\&.
1300 - .SH SYNOPSIS
1301 - package require \fBAAA \fR
1302 - .sp
1303 -@@ -14,11 +14,11 @@ package require \fBBBB VVV\fR
1304 - .sp
1305 - package require \fBCCC ?VVV?\fR
1306 - .sp
1307 --CMDNAME ...
1308 -+CMDNAME \&.\&.\&.
1309 - .sp
1310 --CMDNAME ...
1311 -+CMDNAME \&.\&.\&.
1312 - .sp
1313 --CMDNAME ...
1314 -+CMDNAME \&.\&.\&.
1315 - .sp
1316 - .BE
1317 - .SH DESCRIPTION
1318 -@@ -75,7 +75,7 @@ DESCRIPTION ::\fBMethod\fR::
1319 - TERM
1320 - DESCRIPTION
1321 - .TP
1322 --CMDNAME ...
1323 -+CMDNAME \&.\&.\&.
1324 - DESCRIPTION ::\fBNamespace\fR::
1325 - .RS
1326 - .TP
1327 -@@ -96,10 +96,10 @@ DESCRIPTION ::?Optional?::
1328 - .CE
1329 - .RE
1330 - .TP
1331 --CMDNAME ...
1332 -+CMDNAME \&.\&.\&.
1333 - DESCRIPTION ::\fBPackage\fR::
1334 - .TP
1335 --CMDNAME ...
1336 -+CMDNAME \&.\&.\&.
1337 - DESCRIPTION ::\fBSystemCommand\fR::
1338 - .RS
1339 - .TP
1340 -diff --git a/support/devel/sak/validate/syntax.tcl b/support/devel/sak/validate/syntax.tcl
1341 -index 20b7d33..24e06d2 100644
1342 ---- a/support/devel/sak/validate/syntax.tcl
1343 -+++ b/support/devel/sak/validate/syntax.tcl
1344 -@@ -194,7 +194,9 @@ proc ::sak::validate::syntax::Setup {} {
1345 - interp eval $ip [list ::rename $c {}]
1346 - }
1347 -
1348 -- interp eval $ip [list ::namespace delete ::tcl]
1349 -+ if {![package vsatisfies [package present Tcl] 8.6]} {
1350 -+ interp eval $ip [list ::namespace delete ::tcl]
1351 -+ }
1352 - interp eval $ip [list ::rename namespace {}]
1353 - interp eval $ip [list ::rename rename {}]
1354 -
1355 -diff --git a/support/devel/sak/validate/testsuites.tcl b/support/devel/sak/validate/testsuites.tcl
1356 -index 7072662..71ea694 100644
1357 ---- a/support/devel/sak/validate/testsuites.tcl
1358 -+++ b/support/devel/sak/validate/testsuites.tcl
1359 -@@ -139,7 +139,9 @@ proc ::sak::validate::testsuites::Setup {} {
1360 - interp eval $ip [list ::rename $c {}]
1361 - }
1362 -
1363 -- interp eval $ip [list ::namespace delete ::tcl]
1364 -+ if {![package vsatisfies [package present Tcl] 8.6]} {
1365 -+ interp eval $ip [list ::namespace delete ::tcl]
1366 -+ }
1367 - interp eval $ip [list ::rename namespace {}]
1368 - interp eval $ip [list ::rename rename {}]
1369 -
1370
1371 diff --git a/dev-tcltk/tcllib/files/tcllib-1.15-test.patch b/dev-tcltk/tcllib/files/tcllib-1.15-test.patch
1372 deleted file mode 100644
1373 index 8692cf2cd2d..00000000000
1374 --- a/dev-tcltk/tcllib/files/tcllib-1.15-test.patch
1375 +++ /dev/null
1376 @@ -1,81 +0,0 @@
1377 - modules/clock/iso8601.test | 2 +-
1378 - modules/multiplexer/multiplexer.test | 2 +-
1379 - modules/snit/snit.test | 4 ++--
1380 - modules/struct/sets.testsuite | 2 +-
1381 - modules/uev/uevent.test | 2 +-
1382 - 5 files changed, 6 insertions(+), 6 deletions(-)
1383 -
1384 -diff --git a/modules/clock/iso8601.test b/modules/clock/iso8601.test
1385 -index 85d6416..f1b478e 100644
1386 ---- a/modules/clock/iso8601.test
1387 -+++ b/modules/clock/iso8601.test
1388 -@@ -26,7 +26,7 @@ test clock-iso8601-1.0.1 {parse_date wrong\#args} -constraints {tcl8.6plus} -bod
1389 -
1390 - test clock-iso8601-1.1 {parse_date, bad option} -body {
1391 - clock::iso8601 parse_date 1994-11-05 -foo x
1392 --} -returnCodes error -result {bad switch "-foo", must be -base, -format, -gmt, -locale or -timezone}
1393 -+} -returnCodes error -result {bad option "-foo", must be -base, -format, -gmt, -locale or -timezone}
1394 -
1395 - # NOTE: While listed as legal, -format is NOT. This is because the
1396 - # command simply hands off to clock scan, and we are seeing its error
1397 -diff --git a/modules/multiplexer/multiplexer.test b/modules/multiplexer/multiplexer.test
1398 -index d778253..e5dfeff 100644
1399 ---- a/modules/multiplexer/multiplexer.test
1400 -+++ b/modules/multiplexer/multiplexer.test
1401 -@@ -189,7 +189,7 @@ proc DenyAccessFilter {chan clientaddress clientport} {
1402 - return -1
1403 - }
1404 -
1405 --test multiplexer-5.2 {add access filter which denies access} {
1406 -+test multiplexer-5.2 {add access filter which denies access} {broken without network} {
1407 - set ::forever {}
1408 - set mp [multiplexer::create]
1409 - ${mp}::Init 37465
1410 -diff --git a/modules/snit/snit.test b/modules/snit/snit.test
1411 -index 66d7bd1..00c0769 100644
1412 ---- a/modules/snit/snit.test
1413 -+++ b/modules/snit/snit.test
1414 -@@ -783,7 +783,7 @@ test dtypemethod-1.6a {delegating unknown typemethod to existing typecomponent w
1415 - snit2
1416 - } -returnCodes {
1417 - error
1418 --} -result {unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
1419 -+} -result {unknown or ambiguous subcommand "foo": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
1420 -
1421 - test dtypemethod-1.7 {can't delegate local typemethod: order 1} -body {
1422 - type dog {
1423 -@@ -3339,7 +3339,7 @@ test dmethod-1.6a {delegating unknown method to existing component with error} -
1424 - error
1425 - } -cleanup {
1426 - dog destroy
1427 --} -result {unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
1428 -+} -result {unknown or ambiguous subcommand "foo": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
1429 -
1430 - test dmethod-1.7 {can't delegate local method: order 1} -body {
1431 - type cat {
1432 -diff --git a/modules/struct/sets.testsuite b/modules/struct/sets.testsuite
1433 -index 29fd3ef..28a9dd6 100644
1434 ---- a/modules/struct/sets.testsuite
1435 -+++ b/modules/struct/sets.testsuite
1436 -@@ -13,7 +13,7 @@
1437 - test set-${impl}-1.0 {nothing} {
1438 - catch {setop} msg
1439 - set msg
1440 --} [Nothing]
1441 -+} {wrong # args: should be "::struct::set cmd ?arg ...?"}
1442 -
1443 - test set-${impl}-1.1 {bogus} {
1444 - catch {setop foo} msg
1445 -diff --git a/modules/uev/uevent.test b/modules/uev/uevent.test
1446 -index 91754a7..6544112 100644
1447 ---- a/modules/uev/uevent.test
1448 -+++ b/modules/uev/uevent.test
1449 -@@ -453,7 +453,7 @@ test uevent-10.3 {watch events, watch after bind, glob} {
1450 - ::uevent::unbind $t4
1451 - ::uevent::watch::event::remove $tw
1452 - set res
1453 --} {bound TAG EX bound TAGX EX bound TAG E bound TAGX E unbound TAGX E unbound TAG E unbound TAGX EX unbound TAG EX}
1454 -+} {bound TAGX E bound TAGX EX bound TAG E bound TAG EX unbound TAGX E unbound TAG E unbound TAGX EX unbound TAG EX}
1455 -
1456 - # -------------------------------------------------------------------------
1457 - rename EVENT {}
1458
1459 diff --git a/dev-tcltk/tcllib/files/tcllib-1.16-XSS-vuln.patch b/dev-tcltk/tcllib/files/tcllib-1.16-XSS-vuln.patch
1460 deleted file mode 100644
1461 index 4a08e31e330..00000000000
1462 --- a/dev-tcltk/tcllib/files/tcllib-1.16-XSS-vuln.patch
1463 +++ /dev/null
1464 @@ -1,572 +0,0 @@
1465 - modules/html/html.man | 76 +++++++++++++++-
1466 - modules/html/html.tcl | 55 +++++++++---
1467 - modules/html/html.test | 224 +++++++++++++++++++++++++++++++++++-----------
1468 - modules/html/pkgIndex.tcl | 2 +-
1469 - 4 files changed, 287 insertions(+), 70 deletions(-)
1470 -
1471 -diff --git a/modules/html/html.man b/modules/html/html.man
1472 -index 705a8a2..f18cf4b 100644
1473 ---- a/modules/html/html.man
1474 -+++ b/modules/html/html.man
1475 -@@ -1,5 +1,6 @@
1476 - [comment {-*- tcl -*- doctools manpage}]
1477 --[manpage_begin html n 1.4]
1478 -+[vset HTML_VERSION 1.4.4]
1479 -+[manpage_begin html n [vset HTML_VERSION]]
1480 - [see_also htmlparse]
1481 - [see_also ncgi]
1482 - [keywords checkbox]
1483 -@@ -12,7 +13,7 @@
1484 - [titledesc {Procedures to generate HTML structures}]
1485 - [category {CGI programming}]
1486 - [require Tcl 8.2]
1487 --[require html [opt 1.4]]
1488 -+[require html [opt [vset HTML_VERSION]]]
1489 - [description]
1490 - [para]
1491 -
1492 -@@ -62,7 +63,7 @@ the elements.
1493 -
1494 - [call [cmd ::html::checkValue] [arg name] [opt [arg value]]]
1495 -
1496 --Generate the "name=[arg name] value=[arg value] for a [term checkbox] form
1497 -+Generate the "name=[arg name] value=[arg value]" for a [term checkbox] form
1498 - element. If the CGI variable [arg name] has the value [arg value],
1499 - then SELECTED is added to the return value. [arg value] defaults to
1500 - "1".
1501 -@@ -245,6 +246,51 @@ value list that is used for the name= and value= parameters for the
1502 - [term meta] tag. The [term meta] tag is included in the result of
1503 - [cmd ::html::head].
1504 -
1505 -+[call [cmd ::html::css] [arg href]]
1506 -+
1507 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
1508 -+define a [term link] tag for a linked CSS document. The [arg href]
1509 -+value is a HTTP URL to a CSS document. The [term link] tag is included
1510 -+in the result of [cmd ::html::head].
1511 -+
1512 -+[para]
1513 -+
1514 -+Multiple calls of this command are allowed, enabling the use of
1515 -+multiple CSS document references. In other words, the arguments
1516 -+of multiple calls are accumulated, and do not overwrite each other.
1517 -+
1518 -+[call [cmd ::html::css-clear]]
1519 -+
1520 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
1521 -+clear all links to CSS documents.
1522 -+[para]
1523 -+
1524 -+Multiple calls of this command are allowed, doing nothing after the
1525 -+first of a sequence with no intervening [cmd ::html::css].
1526 -+
1527 -+[call [cmd ::html::js] [arg href]]
1528 -+
1529 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
1530 -+define a [term script] tag for a linked JavaScript document. The
1531 -+[arg href] is a HTTP URL to a JavaScript document. The [term script]
1532 -+tag is included in the result of [cmd ::html::head].
1533 -+
1534 -+[para]
1535 -+
1536 -+Multiple calls of this command are allowed, enabling the use of
1537 -+multiple JavaScript document references. In other words, the arguments
1538 -+of multiple calls are accumulated, and do not overwrite each other.
1539 -+
1540 -+
1541 -+[call [cmd ::html::js-clear]]
1542 -+
1543 -+[emph {Side effect only}]. Call this before [cmd ::html::head] to
1544 -+clear all links to JavaScript documents.
1545 -+[para]
1546 -+
1547 -+Multiple calls of this command are allowed, doing nothing after the
1548 -+first of a sequence with no intervening [cmd ::html::js].
1549 -+
1550 - [call [cmd ::html::minorList] [arg list] [opt [arg ordered]]]
1551 -
1552 - Generate an ordered or unordered list of links. The [arg list] is a
1553 -@@ -306,7 +352,7 @@ is a Tcl-style label, value list.
1554 -
1555 - [call [cmd ::html::radioValue] [arg {name value}]]
1556 -
1557 --Generate the "name=[arg name] value=[arg value] for a [term radio] form
1558 -+Generate the "name=[arg name] value=[arg value]" for a [term radio] form
1559 - element. If the CGI variable [arg name] has the value [arg value],
1560 - then SELECTED is added to the return value.
1561 -
1562 -@@ -401,6 +447,28 @@ structure. Rather than evaluating the body, it returns the subst'ed
1563 - [arg body]. Each iteration of the loop causes another string to be
1564 - concatenated to the result value.
1565 -
1566 -+[call [cmd ::html::doctype] [arg id]]
1567 -+
1568 -+This procedure can be used to build the standard DOCTYPE
1569 -+declaration string. It will return the standard declaration
1570 -+string for the id, or throw an error if the id is not known.
1571 -+The following id's are defined:
1572 -+
1573 -+[list_begin enumerated]
1574 -+[enum] HTML32
1575 -+[enum] HTML40
1576 -+[enum] HTML40T
1577 -+[enum] HTML40F
1578 -+[enum] HTML401
1579 -+[enum] HTML401T
1580 -+[enum] HTML401F
1581 -+[enum] XHTML10S
1582 -+[enum] XHTML10T
1583 -+[enum] XHTML10F
1584 -+[enum] XHTML11
1585 -+[enum] XHTMLB
1586 -+[list_end]
1587 -+
1588 - [list_end]
1589 -
1590 - [vset CATEGORY html]
1591 -diff --git a/modules/html/html.tcl b/modules/html/html.tcl
1592 -index 77e517e..3c0c443 100644
1593 ---- a/modules/html/html.tcl
1594 -+++ b/modules/html/html.tcl
1595 -@@ -15,7 +15,7 @@
1596 -
1597 - package require Tcl 8.2
1598 - package require ncgi
1599 --package provide html 1.4
1600 -+package provide html 1.4.4
1601 -
1602 - namespace eval ::html {
1603 -
1604 -@@ -510,7 +510,7 @@ proc ::html::refresh {content {url {}}} {
1605 - ::if {[string length $url]} {
1606 - append html "; url=$url"
1607 - }
1608 -- append html "\">\n"
1609 -+ append html "\">"
1610 - lappend page(meta) $html
1611 - return ""
1612 - }
1613 -@@ -912,7 +912,7 @@ proc ::html::selectPlain {name param choices {current {}}} {
1614 - # The html fragment
1615 -
1616 - proc ::html::textarea {name {param {}} {current {}}} {
1617 -- ::set value [ncgi::value $name $current]
1618 -+ ::set value [quoteFormValue [ncgi::value $name $current]]
1619 - return "<[string trimright \
1620 - "textarea name=\"$name\"\
1621 - [tagParam textarea $param]"]>$value</textarea>\n"
1622 -@@ -1405,7 +1405,7 @@ proc ::html::html_entities {s} {
1623 - # The text with <br> in place of line-endings.
1624 -
1625 - proc ::html::nl2br {s} {
1626 -- return [string map [list \n\r <br> \n <br> \r <br>] $s]
1627 -+ return [string map [list \n\r <br> \r\n <br> \n <br> \r <br>] $s]
1628 - }
1629 -
1630 - # ::html::doctype
1631 -@@ -1419,9 +1419,10 @@ proc ::html::nl2br {s} {
1632 -
1633 - proc ::html::doctype {arg} {
1634 - variable doctypes
1635 -- set code [string toupper $arg]
1636 -- if {![info exists doctypes($code)]} {
1637 -- return -code error "Unknown doctype \"$arg\""
1638 -+ ::set code [string toupper $arg]
1639 -+ ::if {![info exists doctypes($code)]} {
1640 -+ return -code error -errorcode {HTML DOCTYPE BAD} \
1641 -+ "Unknown doctype \"$arg\""
1642 - }
1643 - return $doctypes($code)
1644 - }
1645 -@@ -1451,12 +1452,26 @@ namespace eval ::html {
1646 - # href The location of the css file to include the filename and path
1647 - #
1648 - # Results:
1649 --# HTML for the section
1650 -+# None.
1651 -
1652 - proc ::html::css {href} {
1653 - variable page
1654 -- set page(css) \
1655 -- "<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">\n"
1656 -+ lappend page(css) "<link rel=\"stylesheet\" type=\"text/css\" href=\"[quoteFormValue $href]\">"
1657 -+ return
1658 -+}
1659 -+
1660 -+# ::html::css-clear
1661 -+# Drop all text/css references.
1662 -+#
1663 -+# Arguments:
1664 -+# None.
1665 -+#
1666 -+# Results:
1667 -+# None.
1668 -+
1669 -+proc ::html::css-clear {} {
1670 -+ variable page
1671 -+ catch { unset page(css) }
1672 - return
1673 - }
1674 -
1675 -@@ -1467,11 +1482,25 @@ proc ::html::css {href} {
1676 - # href The location of the javascript file to include the filename and path
1677 - #
1678 - # Results:
1679 --# HTML for the section
1680 -+# None.
1681 -
1682 - proc ::html::js {href} {
1683 - variable page
1684 -- set page(js) \
1685 -- "<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>\n"
1686 -+ lappend page(js) "<script language=\"javascript\" type=\"text/javascript\" src=\"[quoteFormValue $href]\"></script>"
1687 -+ return
1688 -+}
1689 -+
1690 -+# ::html::js-clear
1691 -+# Drop all text/javascript references.
1692 -+#
1693 -+# Arguments:
1694 -+# None.
1695 -+#
1696 -+# Results:
1697 -+# None.
1698 -+
1699 -+proc ::html::js-clear {} {
1700 -+ variable page
1701 -+ catch { unset page(js) }
1702 - return
1703 - }
1704 -diff --git a/modules/html/html.test b/modules/html/html.test
1705 -index 7a03c54..6646fb6 100644
1706 ---- a/modules/html/html.test
1707 -+++ b/modules/html/html.test
1708 -@@ -17,8 +17,8 @@ source [file join \
1709 - [file dirname [file dirname [file join [pwd] [info script]]]] \
1710 - devtools testutilities.tcl]
1711 -
1712 --testsNeedTcl 8.2
1713 --testsNeedTcltest 1.0
1714 -+testsNeedTcl 8.4
1715 -+testsNeedTcltest 2.0
1716 -
1717 - testing {
1718 - useLocal html.tcl html
1719 -@@ -26,45 +26,46 @@ testing {
1720 -
1721 - # -------------------------------------------------------------------------
1722 -
1723 --test html-1.1 {html::init} {
1724 -+test html-1.1 {html::init} -body {
1725 - html::init
1726 -- list [array exists html::defaults] \
1727 -- [array size html::defaults] \
1728 -- [info exists html::page]
1729 --} {1 0 0}
1730 -+ list \
1731 -+ [array exists html::defaults] \
1732 -+ [array size html::defaults] \
1733 -+ [info exists html::page]
1734 -+} -result {1 0 0}
1735 -
1736 --test html-1.2 {html::init} {
1737 -+test html-1.2 {html::init} -body {
1738 - html::init {
1739 - font.face arial
1740 - body.bgcolor white
1741 - body.text black
1742 - }
1743 - lsort [array names html::defaults]
1744 --} {body.bgcolor body.text font.face}
1745 -+} -result {body.bgcolor body.text font.face}
1746 -
1747 --test html-1.3 {html::init} {
1748 -- catch {html::init wrong num args}
1749 --} 1
1750 -+test html-1.3 {html::init, too many args} -body {
1751 -+ html::init wrong num args
1752 -+} -returnCodes error -result {wrong # args: should be "html::init ?nvlist?"}
1753 -
1754 --test html-1.4 {html::init} {
1755 -- catch {html::init {wrong num args}}
1756 --} 1
1757 -+test html-1.4 {html::init, bad arg, odd-length list} -body {
1758 -+ html::init {wrong num args}
1759 -+} -returnCodes error -result {list must have an even number of elements}
1760 -
1761 --test html-2.1 {html::head} {
1762 -- catch {html::head}
1763 --} 1
1764 -+test html-2.1 {html::head, not enough args} -body {
1765 -+ html::head
1766 -+} -returnCodes error -result {wrong # args: should be "html::head title"}
1767 -
1768 --test html-2.2 {html::head} {
1769 -+test html-2.2 {html::head} -body {
1770 - html::head "The Title"
1771 --} "<html><head>\n\t<title>The Title</title>\n</head>\n"
1772 -+} -result "<html><head>\n\t<title>The Title</title>\n</head>\n"
1773 -
1774 --test html-2.3 {html::head} {
1775 -+test html-2.3 {html::head} -body {
1776 - html::description "The Description"
1777 - html::keywords key word
1778 - html::author "Cathy Coder"
1779 - html::meta metakey metavalue
1780 - html::head "The Title"
1781 --} {<html><head>
1782 -+} -result {<html><head>
1783 - <title>The Title</title>
1784 - <!-- Cathy Coder -->
1785 - <meta name="description" content="The Description">
1786 -@@ -73,24 +74,24 @@ test html-2.3 {html::head} {
1787 - </head>
1788 - }
1789 -
1790 --test html-3.1 {html::title} {
1791 -- catch html::title
1792 --} 1
1793 -+test html-3.1 {html::title, not enough args} -body {
1794 -+ html::title
1795 -+} -returnCodes error -result {wrong # args: should be "html::title title"}
1796 -
1797 --test html-3.2 {html::title} {
1798 -+test html-3.2 {html::title} -body {
1799 - html::title "blah blah"
1800 --} "<title>blah blah</title>\n"
1801 -+} -result "<title>blah blah</title>\n"
1802 -
1803 --test html-4.1 {html::getTitle} {
1804 -+test html-4.1 {html::getTitle} -body {
1805 - html::init
1806 - html::getTitle
1807 --} ""
1808 -+} -result ""
1809 -
1810 --test html-4.2 {html::getTitle} {
1811 -+test html-4.2 {html::getTitle} -body {
1812 - html::init
1813 - html::title "blah blah"
1814 - html::getTitle
1815 --} {blah blah}
1816 -+} -result {blah blah}
1817 -
1818 - test html-5.1 {html::meta} {
1819 - html::init
1820 -@@ -453,6 +454,18 @@ test html-23.2 {html::textarea} {
1821 - } {<textarea name="info" cols="50" rows="8">The textarea value.</textarea>
1822 - }
1823 -
1824 -+test html-23.3 {html::textarea, dangerous input} {
1825 -+ html::init {
1826 -+ textarea.cols 50
1827 -+ textarea.rows 8
1828 -+ }
1829 -+ ncgi::reset info=[ncgi::encode "</textarea><script>alert(1)</script>"]
1830 -+ ncgi::parse
1831 -+ html::textarea info
1832 -+} {<textarea name="info" cols="50" rows="8">&lt;/textarea&gt;&lt;script&gt;alert(1)&lt;/script&gt;</textarea>
1833 -+}
1834 -+
1835 -+
1836 - test html-24.1 {html::submit} {
1837 - catch {html::submit}
1838 - } {1}
1839 -@@ -516,7 +529,6 @@ test html-26.4 {html::refresh} {
1840 - } {<html><head>
1841 - <title>title</title>
1842 - <meta http-equiv="Refresh" content="4">
1843 --
1844 - </head>
1845 - }
1846 - test html-26.5 {html::refresh} {
1847 -@@ -526,7 +538,6 @@ test html-26.5 {html::refresh} {
1848 - } {<html><head>
1849 - <title>title</title>
1850 - <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
1851 --
1852 - </head>
1853 - }
1854 -
1855 -@@ -794,6 +805,7 @@ test html-32.1 {single argument} {
1856 - set result [html::eval {set x [format 22]}]
1857 - list $result $x
1858 - } {{} 22}
1859 -+
1860 - test html-32.2 {multiple arguments} {
1861 - set a {$b}
1862 - set b xyzzy
1863 -@@ -801,38 +813,146 @@ test html-32.2 {multiple arguments} {
1864 - set result [html::eval {set x [eval format $a]}]
1865 - list $result $x
1866 - } {{} xyzzy}
1867 -+
1868 - test html-32.3 {single argument} {
1869 - set x [list]
1870 - set y 1
1871 - set result [html::eval lappend x a b c d {$y} e f g]
1872 - list $result $x
1873 - } {{} {a b c d 1 e f g}}
1874 --test html-32.4 {error: not enough arguments} {catch html::eval} 1
1875 --test html-32.5 {error: not enough arguments} {
1876 -- catch html::eval msg
1877 -- set msg
1878 --} {wrong # args: should be "uplevel ?level? command ?arg ...?"}
1879 --test html-32.6 {error in eval'ed command} {
1880 -- catch {html::eval {error "test error"}}
1881 --} 1
1882 --test html-32.7 {error in eval'ed command} {
1883 -- catch {html::eval {error "test error"}} msg
1884 -- set msg
1885 --} {test error}
1886 -
1887 -+test html-32.4 {error: not enough arguments} -body {
1888 -+ html::eval
1889 -+} -returnCodes error -result {wrong # args: should be "uplevel ?level? command ?arg ...?"}
1890 -
1891 --test html-33.0 {html::font} {
1892 -+test html-32.6 {error in eval'ed command} -body {
1893 -+ html::eval {error "test error"}
1894 -+} -returnCodes error -result {test error}
1895 -+
1896 -+test html-33.0 {html::font} -body {
1897 - html::font
1898 --} {}
1899 -+} -result {}
1900 -
1901 --test html-33.1 {html::font} {
1902 -+test html-33.1 {html::font} -body {
1903 - html::font size=18
1904 --} {<font size=18>}
1905 -+} -result {<font size=18>}
1906 -
1907 --
1908 --test html-34.0 {html::nl2br} {
1909 -+test html-34.0 {html::nl2br} -body {
1910 - html::nl2br "a\n\rb\nc\rd"
1911 --} {a<br>b<br>c<br>d}
1912 -+} -result {a<br>b<br>c<br>d}
1913 -
1914 -+test html-34.1 {html::nl2br, ticket 1742078} -body {
1915 -+ html::nl2br "a\r\nb"
1916 -+} -result {a<br>b}
1917 -
1918 -+# -------------------------------------------------------------------------
1919 -+
1920 -+test html-tkt3439702-35.0 {html::css, not enough arguments} -body {
1921 -+ html::css
1922 -+} -returnCodes error -result {wrong # args: should be "html::css href"}
1923 -+
1924 -+test html-tkt3439702-35.1 {html::css, too many arguments} -body {
1925 -+ html::css REF X
1926 -+} -returnCodes error -result {wrong # args: should be "html::css href"}
1927 -+
1928 -+test html-tkt3439702-35.2 {html::css, single ref} -setup {
1929 -+ html::css-clear
1930 -+} -body {
1931 -+ html::css "http://test.css"
1932 -+ string trim [html::head T]
1933 -+} -cleanup {
1934 -+ html::css-clear
1935 -+} -result "<html><head>\n\t<title>T</title>\n\t<meta http-equiv=\"Refresh\" content=\"9; url=http://www.scriptics.com\">\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"http://test.css\">\n</head>"
1936 -+
1937 -+test html-tkt3439702-35.3 {html::css, multiple ref} -setup {
1938 -+ html::css-clear
1939 -+} -body {
1940 -+ html::css "http://test1.css"
1941 -+ html::css "http://test2.css"
1942 -+ string trim [html::head T]
1943 -+} -cleanup {
1944 -+ html::css-clear
1945 -+} -result {<html><head>
1946 -+ <title>T</title>
1947 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
1948 -+ <link rel="stylesheet" type="text/css" href="http://test1.css">
1949 -+ <link rel="stylesheet" type="text/css" href="http://test2.css">
1950 -+</head>}
1951 -+
1952 -+# -------------------------------------------------------------------------
1953 -+
1954 -+test html-tkt3439702-36.0 {html::js, not enough arguments} -body {
1955 -+ html::js
1956 -+} -returnCodes error -result {wrong # args: should be "html::js href"}
1957 -+
1958 -+test html-tkt3439702-36.1 {html::js, too many arguments} -body {
1959 -+ html::js REF X
1960 -+} -returnCodes error -result {wrong # args: should be "html::js href"}
1961 -+
1962 -+test html-tkt3439702-36.2 {html::js, single ref} -setup {
1963 -+ html::js-clear
1964 -+} -body {
1965 -+ html::js "http://test.js"
1966 -+ string trim [html::head T]
1967 -+} -cleanup {
1968 -+ html::js-clear
1969 -+} -result {<html><head>
1970 -+ <title>T</title>
1971 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
1972 -+ <script language="javascript" type="text/javascript" src="http://test.js"></script>
1973 -+</head>}
1974 -+
1975 -+test html-tkt3439702-36.3 {html::js, multiple ref} -setup {
1976 -+ html::js-clear
1977 -+} -body {
1978 -+ html::js "http://test1.js"
1979 -+ html::js "http://test2.js"
1980 -+ string trim [html::head T]
1981 -+} -cleanup {
1982 -+ html::js-clear
1983 -+} -result {<html><head>
1984 -+ <title>T</title>
1985 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
1986 -+ <script language="javascript" type="text/javascript" src="http://test1.js"></script>
1987 -+ <script language="javascript" type="text/javascript" src="http://test2.js"></script>
1988 -+</head>}
1989 -+
1990 -+test html-tkt3439702-37.0 {html::js, html::css, mixed} -setup {
1991 -+ html::css-clear
1992 -+ html::js-clear
1993 -+} -body {
1994 -+ html::css "http://test.css"
1995 -+ html::js "http://test.js"
1996 -+ string trim [html::head T]
1997 -+} -cleanup {
1998 -+ html::js-clear
1999 -+ html::css-clear
2000 -+} -result {<html><head>
2001 -+ <title>T</title>
2002 -+ <meta http-equiv="Refresh" content="9; url=http://www.scriptics.com">
2003 -+ <link rel="stylesheet" type="text/css" href="http://test.css">
2004 -+ <script language="javascript" type="text/javascript" src="http://test.js"></script>
2005 -+</head>}
2006 -+
2007 -+# -------------------------------------------------------------------------
2008 -+# TODO: html::css-clear, html::js-clear
2009 -+
2010 -+
2011 -+test html-tktafe4366e2e-38.0 {html::doctype, not enough args} -body {
2012 -+ html::doctype
2013 -+} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
2014 -+
2015 -+test html-tktafe4366e2e-38.1 {html::doctype, too many args} -body {
2016 -+ html::doctype HTML401T X
2017 -+} -returnCodes error -result {wrong # args: should be "html::doctype arg"}
2018 -+
2019 -+test html-tktafe4366e2e-38.2 {html::doctype, unknown type} -body {
2020 -+ html::doctype HTML401TXXX
2021 -+} -returnCodes error -result {Unknown doctype "HTML401TXXX"}
2022 -+
2023 -+test html-tktafe4366e2e-38.3 {html::doctype} -body {
2024 -+ html::doctype HTML401T
2025 -+} -result {<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">}
2026 -+
2027 -+# -------------------------------------------------------------------------
2028 - testsuiteCleanup
2029 -diff --git a/modules/html/pkgIndex.tcl b/modules/html/pkgIndex.tcl
2030 -index 88a71b2..9d91097 100644
2031 ---- a/modules/html/pkgIndex.tcl
2032 -+++ b/modules/html/pkgIndex.tcl
2033 -@@ -1,2 +1,2 @@
2034 - if {![package vsatisfies [package provide Tcl] 8.2]} {return}
2035 --package ifneeded html 1.4 [list source [file join $dir html.tcl]]
2036 -+package ifneeded html 1.4.4 [list source [file join $dir html.tcl]]
2037
2038 diff --git a/dev-tcltk/tcllib/files/tcllib-1.16-test.patch b/dev-tcltk/tcllib/files/tcllib-1.16-test.patch
2039 deleted file mode 100644
2040 index 8b3c8ca2590..00000000000
2041 --- a/dev-tcltk/tcllib/files/tcllib-1.16-test.patch
2042 +++ /dev/null
2043 @@ -1,81 +0,0 @@
2044 - modules/clock/iso8601.test | 2 +-
2045 - modules/multiplexer/multiplexer.test | 2 +-
2046 - modules/snit/snit.test | 4 ++--
2047 - modules/struct/sets.testsuite | 2 +-
2048 - modules/uev/uevent.test | 2 +-
2049 - 5 files changed, 6 insertions(+), 6 deletions(-)
2050 -
2051 -diff --git a/modules/clock/iso8601.test b/modules/clock/iso8601.test
2052 -index 6fce938..a9db5b0 100644
2053 ---- a/modules/clock/iso8601.test
2054 -+++ b/modules/clock/iso8601.test
2055 -@@ -26,7 +26,7 @@ test clock-iso8601-1.0.1 {parse_date wrong\#args} -constraints {tcl8.6plus} -bod
2056 -
2057 - test clock-iso8601-1.1 {parse_date, bad option} -body {
2058 - clock::iso8601 parse_date 1994-11-05 -foo x
2059 --} -returnCodes error -result {bad switch "-foo", must be -base, -format, -gmt, -locale or -timezone}
2060 -+} -returnCodes error -result {bad option "-foo", must be -base, -format, -gmt, -locale or -timezone}
2061 -
2062 - # NOTE: While listed as legal, -format is NOT. This is because the
2063 - # command simply hands off to clock scan, and we are seeing its error
2064 -diff --git a/modules/multiplexer/multiplexer.test b/modules/multiplexer/multiplexer.test
2065 -index d778253..e5dfeff 100644
2066 ---- a/modules/multiplexer/multiplexer.test
2067 -+++ b/modules/multiplexer/multiplexer.test
2068 -@@ -189,7 +189,7 @@ proc DenyAccessFilter {chan clientaddress clientport} {
2069 - return -1
2070 - }
2071 -
2072 --test multiplexer-5.2 {add access filter which denies access} {
2073 -+test multiplexer-5.2 {add access filter which denies access} {broken without network} {
2074 - set ::forever {}
2075 - set mp [multiplexer::create]
2076 - ${mp}::Init 37465
2077 -diff --git a/modules/snit/snit.test b/modules/snit/snit.test
2078 -index 66d7bd1..00c0769 100644
2079 ---- a/modules/snit/snit.test
2080 -+++ b/modules/snit/snit.test
2081 -@@ -783,7 +783,7 @@ test dtypemethod-1.6a {delegating unknown typemethod to existing typecomponent w
2082 - snit2
2083 - } -returnCodes {
2084 - error
2085 --} -result {unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
2086 -+} -result {unknown or ambiguous subcommand "foo": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
2087 -
2088 - test dtypemethod-1.7 {can't delegate local typemethod: order 1} -body {
2089 - type dog {
2090 -@@ -3339,7 +3339,7 @@ test dmethod-1.6a {delegating unknown method to existing component with error} -
2091 - error
2092 - } -cleanup {
2093 - dog destroy
2094 --} -result {unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
2095 -+} -result {unknown or ambiguous subcommand "foo": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}
2096 -
2097 - test dmethod-1.7 {can't delegate local method: order 1} -body {
2098 - type cat {
2099 -diff --git a/modules/struct/sets.testsuite b/modules/struct/sets.testsuite
2100 -index 29fd3ef..28a9dd6 100644
2101 ---- a/modules/struct/sets.testsuite
2102 -+++ b/modules/struct/sets.testsuite
2103 -@@ -13,7 +13,7 @@
2104 - test set-${impl}-1.0 {nothing} {
2105 - catch {setop} msg
2106 - set msg
2107 --} [Nothing]
2108 -+} {wrong # args: should be "::struct::set cmd ?arg ...?"}
2109 -
2110 - test set-${impl}-1.1 {bogus} {
2111 - catch {setop foo} msg
2112 -diff --git a/modules/uev/uevent.test b/modules/uev/uevent.test
2113 -index 91754a7..6544112 100644
2114 ---- a/modules/uev/uevent.test
2115 -+++ b/modules/uev/uevent.test
2116 -@@ -453,7 +453,7 @@ test uevent-10.3 {watch events, watch after bind, glob} {
2117 - ::uevent::unbind $t4
2118 - ::uevent::watch::event::remove $tw
2119 - set res
2120 --} {bound TAG EX bound TAGX EX bound TAG E bound TAGX E unbound TAGX E unbound TAG E unbound TAGX EX unbound TAG EX}
2121 -+} {bound TAGX E bound TAGX EX bound TAG E bound TAG EX unbound TAGX E unbound TAG E unbound TAGX EX unbound TAG EX}
2122 -
2123 - # -------------------------------------------------------------------------
2124 - rename EVENT {}
2125
2126 diff --git a/dev-tcltk/tcllib/tcllib-1.15-r2.ebuild b/dev-tcltk/tcllib/tcllib-1.15-r2.ebuild
2127 index 38fc5f78a41..9b88517a441 100644
2128 --- a/dev-tcltk/tcllib/tcllib-1.15-r2.ebuild
2129 +++ b/dev-tcltk/tcllib/tcllib-1.15-r2.ebuild
2130 @@ -8,8 +8,7 @@ inherit eutils virtualx
2131 DESCRIPTION="Tcl Standard Library"
2132 HOMEPAGE="http://www.tcl.tk/software/tcllib/"
2133 SRC_URI="
2134 - https://dev.gentoo.org/~jlec/distfiles/${P}-manpage-rename.patch.xz
2135 - https://dev.gentoo.org/~jlec/distfiles/${P}-test.patch.xz
2136 + https://dev.gentoo.org/~mgorny/dist/${P}-patchset.tar.xz
2137 mirror://sourceforge/tcllib/${P}.tar.bz2"
2138
2139 LICENSE="BSD"
2140 @@ -23,15 +22,15 @@ DEPEND="${RDEPEND}"
2141 DOCS=( DESCRIPTION.txt STATUS )
2142
2143 PATCHES=(
2144 - "${FILESDIR}"/${P}-tcl8.6-test.patch
2145 - "${WORKDIR}"/${P}-test.patch
2146 - "${WORKDIR}"/${P}-manpage-rename.patch
2147 - "${FILESDIR}"/${P}-XSS-vuln.patch
2148 + "${WORKDIR}"/${P}-patchset/${P}-tcl8.6-test.patch
2149 + "${WORKDIR}"/${P}-patchset/${P}-test.patch
2150 + "${WORKDIR}"/${P}-patchset/${P}-manpage-rename.patch
2151 + "${WORKDIR}"/${P}-patchset/${P}-XSS-vuln.patch
2152 )
2153
2154 src_prepare() {
2155 has_version ">=dev-lang/tcl-8.6" && \
2156 - PATCHES+=( "${FILESDIR}"/${P}-test.patch )
2157 + PATCHES+=( "${WORKDIR}"/${P}-patchset/${P}-tcl8.6-test-2.patch )
2158 epatch "${PATCHES[@]}"
2159 }
2160
2161
2162 diff --git a/dev-tcltk/tcllib/tcllib-1.16.ebuild b/dev-tcltk/tcllib/tcllib-1.16.ebuild
2163 index 4232724bc11..1f34a46571b 100644
2164 --- a/dev-tcltk/tcllib/tcllib-1.16.ebuild
2165 +++ b/dev-tcltk/tcllib/tcllib-1.16.ebuild
2166 @@ -10,7 +10,8 @@ MY_P=${MY_PN}-${PV}
2167
2168 DESCRIPTION="Tcl Standard Library"
2169 HOMEPAGE="http://www.tcl.tk/software/tcllib/"
2170 -SRC_URI="mirror://sourceforge//project/${PN}/${PN}/${PV}/${MY_P}.tar.bz2"
2171 +SRC_URI="mirror://sourceforge//project/${PN}/${PN}/${PV}/${MY_P}.tar.bz2
2172 + https://dev.gentoo.org/~mgorny/dist/${P}-patchset.tar.xz"
2173
2174 LICENSE="BSD"
2175 SLOT="0"
2176 @@ -27,11 +28,11 @@ DOCS=( DESCRIPTION.txt STATUS )
2177
2178 S="${WORKDIR}"/${MY_P}
2179
2180 -PATCHES=( "${FILESDIR}"/${P}-XSS-vuln.patch )
2181 +PATCHES=( "${WORKDIR}"/${P}-patchset/${P}-XSS-vuln.patch )
2182
2183 src_prepare() {
2184 has_version ">=dev-lang/tcl-8.6" && \
2185 - PATCHES+=( "${FILESDIR}"/${P}-test.patch )
2186 + PATCHES+=( "${WORKDIR}"/${P}-patchset/${P}-test.patch )
2187 epatch "${PATCHES[@]}"
2188
2189 sed \