summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2021-06-25 14:03:55 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2021-06-25 14:03:55 (GMT)
commitce4804bf2c760215562c9ca1c5f76589611050cb (patch)
treef7eae2bd3b367bc716ce851d7e988a3b3b8e14dc
parent7951ebbd2e2809e4c48986c8bc50b39eb0b2b75a (diff)
parenta6691785d8bdaa339449e8df532a8b11a8690909 (diff)
downloadtcl-ce4804bf2c760215562c9ca1c5f76589611050cb.zip
tcl-ce4804bf2c760215562c9ca1c5f76589611050cb.tar.gz
tcl-ce4804bf2c760215562c9ca1c5f76589611050cb.tar.bz2
Merge 8.7
-rw-r--r--.github/ISSUE_TEMPLATE.md2
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md2
-rw-r--r--.github/workflows/onefiledist.yml2
-rw-r--r--ChangeLog2
-rw-r--r--ChangeLog.20042
-rw-r--r--ChangeLog.20072
-rw-r--r--README.md6
-rw-r--r--changes85
-rw-r--r--compat/zlib/contrib/masmx64/inffas8664.c372
-rw-r--r--compat/zlib/contrib/testzlib/testzlib.c550
-rw-r--r--doc/clock.n4
-rw-r--r--doc/cookiejar.n4
-rw-r--r--doc/dde.n2
-rw-r--r--doc/tm.n4
-rw-r--r--generic/tcl.h6
-rw-r--r--generic/tclBasic.c24
-rw-r--r--generic/tclEncoding.c2
-rw-r--r--generic/tclExecute.c1
-rw-r--r--generic/tclInt.h5
-rw-r--r--generic/tclZipfs.c10
-rw-r--r--library/cookiejar/cookiejar.tcl4
-rw-r--r--library/cookiejar/public_suffix_list.dat.gz (renamed from library/cookiejar/effective_tld_names.txt.gz)bin70836 -> 70835 bytes
-rw-r--r--library/encoding/iso8859-11.enc20
-rw-r--r--library/encoding/iso8859-7.enc2
-rw-r--r--library/init.tcl2
-rw-r--r--libtommath/bn_mp_sqrt.c1
-rw-r--r--tests/chanio.test55
-rw-r--r--tests/coroutine.test71
-rw-r--r--tests/encoding.test17
-rw-r--r--tools/encoding/cp1250.txt4
-rw-r--r--tools/encoding/cp1251.txt4
-rw-r--r--tools/encoding/cp1252.txt4
-rw-r--r--tools/encoding/cp1253.txt4
-rw-r--r--tools/encoding/cp1254.txt4
-rw-r--r--tools/encoding/cp1255.txt4
-rw-r--r--tools/encoding/cp1256.txt4
-rw-r--r--tools/encoding/cp1257.txt4
-rw-r--r--tools/encoding/cp1258.txt4
-rw-r--r--tools/encoding/cp874.txt4
-rw-r--r--tools/encoding/cp932.txt4
-rw-r--r--tools/encoding/cp936.txt4
-rw-r--r--tools/encoding/cp949.txt4
-rw-r--r--tools/encoding/cp950.txt4
-rw-r--r--tools/encoding/iso8859-1.txt41
-rw-r--r--tools/encoding/iso8859-10.txt39
-rw-r--r--tools/encoding/iso8859-11.txt286
-rw-r--r--tools/encoding/iso8859-13.txt40
-rw-r--r--tools/encoding/iso8859-14.txt41
-rw-r--r--tools/encoding/iso8859-15.txt41
-rw-r--r--tools/encoding/iso8859-16.txt38
-rw-r--r--tools/encoding/iso8859-2.txt41
-rw-r--r--tools/encoding/iso8859-3.txt41
-rw-r--r--tools/encoding/iso8859-4.txt41
-rw-r--r--tools/encoding/iso8859-5.txt41
-rw-r--r--tools/encoding/iso8859-6.txt45
-rw-r--r--tools/encoding/iso8859-7.txt53
-rw-r--r--tools/encoding/iso8859-8.txt38
-rw-r--r--tools/encoding/iso8859-9.txt40
-rw-r--r--unix/Makefile.in7
-rw-r--r--unix/README6
-rwxr-xr-xunix/configure2
-rw-r--r--unix/configure.ac2
-rw-r--r--unix/tcl.pc.in2
-rw-r--r--unix/tcl.spec4
-rw-r--r--unix/tclEpollNotfy.c37
-rw-r--r--unix/tclKqueueNotfy.c5
-rw-r--r--win/Makefile.in4
-rw-r--r--win/README9
-rwxr-xr-xwin/configure2
-rw-r--r--win/configure.ac2
-rw-r--r--win/makefile.vc36
-rw-r--r--win/nmakehlp.c44
-rw-r--r--win/rules.vc2
-rw-r--r--win/tcl.m42
-rw-r--r--win/tclWinFile.c2
75 files changed, 1390 insertions, 959 deletions
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 22d3860..60c8cbb 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,3 +1,3 @@
Important Note
==========
-Please do not file issues with Tcl on Github. They are unlikely to be noticed in a timely fashion. Tcl issues are hosted in the [tcl fossil repository on core.tcl.tk](https://core.tcl.tk/tcl/tktnew); please post them there.
+Please do not file issues with Tcl on Github. They are unlikely to be noticed in a timely fashion. Tcl issues are hosted in the [tcl fossil repository on core.tcl-lang.org](https://core.tcl-lang.org/tcl/tktnew); please post them there.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index da07cd2..d98ff0e 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,3 +1,3 @@
Important Note
==========
-Please do not file pull requests with Tcl on Github. They are unlikely to be noticed in a timely fashion. Tcl issues (including patches) are hosted in the [tcl fossil repository on core.tcl.tk](https://core.tcl.tk/tcl/tktnew); please post them there.
+Please do not file pull requests with Tcl on Github. They are unlikely to be noticed in a timely fashion. Tcl issues (including patches) are hosted in the [tcl fossil repository on core.tcl-lang.org](https://core.tcl-lang.org/tcl/tktnew); please post them there.
diff --git a/.github/workflows/onefiledist.yml b/.github/workflows/onefiledist.yml
index f2f6c1e..b5caa4e 100644
--- a/.github/workflows/onefiledist.yml
+++ b/.github/workflows/onefiledist.yml
@@ -3,7 +3,7 @@ on: [push]
jobs:
linux:
name: Linux
- runs-on: ubuntu-16.04
+ runs-on: ubuntu-18.04
defaults:
run:
shell: bash
diff --git a/ChangeLog b/ChangeLog
index ec5e78f..61e3e04 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8096,7 +8096,7 @@ a better first place to look now.
2009-03-25 Jan Nijtmans <nijtmans@users.sf.net>
* doc/tclsh.1: Bring doc and tools in line with
- * tools/installData.tcl: http://wiki.tcl.tk/812
+ * tools/installData.tcl: https://wiki.tcl-lang.org/page/exec+magic
* tools/str2c
* tools/tcltk-man2html.tcl
diff --git a/ChangeLog.2004 b/ChangeLog.2004
index f7da18d..550e286 100644
--- a/ChangeLog.2004
+++ b/ChangeLog.2004
@@ -345,7 +345,7 @@
* library/clock.tcl: Corrected the regular expressions that match a
time zone to allow for time zones specified as +HH or -HH.
* tests/clock.test: Added regression test case for the above issue.
- Thanks to Rolf Ade for reporting this issue [http://wiki.tcl.tk/13094]
+ Thanks to Rolf Ade for reporting this issue [https://wiki.tcl-lang.org/page/Parsing+ISO8601+dates+and+times]
* win/tclWinDde.c (Tcl_DdeObjCmd): Corrected a typo that caused a
compilation failure on VC++.
diff --git a/ChangeLog.2007 b/ChangeLog.2007
index 34725e3..b01db6a 100644
--- a/ChangeLog.2007
+++ b/ChangeLog.2007
@@ -5262,7 +5262,7 @@
* generic/tclStrToD.c: Added code to support the "middle endian"
floating point format used in the Nokia N770's software-based floating
point. Thanks to Bruce Johnson for reporting this bug, originally on
- http://wiki.tcl.tk/15408.
+ https://wiki.tcl-lang.org/page/Nokia+770.
* library/clock.tcl: Fixed a bug with Daylight Saving Time and Posix
time zone specifiers reported by Martin Lemburg in
http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/9a8b15a4dfc0b7a0
diff --git a/README.md b/README.md
index cc6bbab..8b84860 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# README: Tcl
-This is the **Tcl 8.7a4** source distribution.
+This is the **Tcl 8.7a6** source distribution.
You can get any source release of Tcl from [our distribution
site](https://sourceforge.net/projects/tcl/files/Tcl/).
@@ -45,7 +45,7 @@ and selling it either in whole or in part. See the file
## <a id="doc">2.</a> Documentation
Extensive documentation is available on our website.
The home page for this release, including new features, is
-[here](https://www.tcl.tk/software/tcltk/8.7.html).
+[here](https://www.tcl-lang.org/software/tcltk/8.7.html).
Detailed release notes can be found at the
[file distributions page](https://sourceforge.net/projects/tcl/files/Tcl/)
by clicking on the relevant version.
@@ -96,7 +96,7 @@ Tcl Dev Kit builds on the earlier TclPro toolset and provides a debugger,
static code checker, single-file wrapping utility, bytecode compiler, and
more. More information can be found at
- http://www.ActiveState.com/Tcl
+ https://www.activestate.com/products/tcl/
## <a id="complangtcl">5.</a> Tcl newsgroup
There is a USENET newsgroup, "`comp.lang.tcl`", intended for the exchange of
diff --git a/changes b/changes
index b3fcffb..96350a1 100644
--- a/changes
+++ b/changes
@@ -8843,7 +8843,7 @@ in this changeset (new minor version) rather than bug fixes:
2017-09-02 (bug)[0e4d88] replace command, delete trace kills namespace (porter)
---- Released 8.7a1, September 8, 2017 --- http://core.tcl.tk/tcl/ for details
+--- Released 8.7a1, September 8, 2017 --- https://core.tcl-lang.org/tcl/ for details
2017-08-10 [array names -regexp] supports backrefs (goth)
@@ -8942,7 +8942,7 @@ in this changeset (new minor version) rather than bug fixes:
2018-11-16 (bug)[00d04c] Repair [binary encode base64] (sebres)
-- Released 8.6.9, November 16, 2018 - details at http://core.tcl-lang.org/tcl/ -
+- Released 8.6.9, November 16, 2018 - details at https://core.tcl-lang.org/tcl/ -
2018-11-22 (bug)[7a9dc5] [file normalize ~/~foo] segfault (sebres)
@@ -8990,7 +8990,7 @@ in this changeset (new minor version) rather than bug fixes:
2019-11-15 (bug)[135804] segfault in [next] after destroy (coulter,sebres)
-- Released 8.6.10, Nov 21, 2019 - details at http://core.tcl-lang.org/tcl/ -
+- Released 8.6.10, Nov 21, 2019 - details at https://core.tcl-lang.org/tcl/ -
2019-12-03 (bug)[3cd9be] Corner case in surrogate handling (nijtmans)
@@ -9119,7 +9119,7 @@ See RFC 2045
2020-12-23 tzdata updated to Olson's tzdata2020e (jima)
-- Released 8.6.11, Dec 31, 2020 - details at http://core.tcl-lang.org/tcl/ -
+- Released 8.6.11, Dec 31, 2020 - details at https://core.tcl-lang.org/tcl/ -
Changes to 8.7a3 include all changes to the 8.6 line through 8.6.10,
plus the following, which focuses on the high-level feature changes
@@ -9228,6 +9228,9 @@ in this changeset (new minor version) rather than bug fixes:
2019-04-16 [TIP 342] [dict getwithdefault]
+2019-04-23 (bug)[67a5ea] make [chan postevent] asynchronous
+ *** POTENTIAL INCOMPATIBILITY ***
+
2019-05-25 [TIP 431] [file tempdir]
2019-05-25 [TIP 383] [coroinject], [coroprobe]
@@ -9254,4 +9257,76 @@ Changes to 8.7a5 include all changes to the 8.6 line through 8.6.11,
plus the following, which focuses on the high-level feature changes
in this changeset (new minor version) rather than bug fixes:
-- Released 8.7a5, Jan 21, 2021 --- http://core.tcl-lang.org/tcl/ for details -
+2019-12-13 [TIP 538] Externalize libtommath
+
+2020-01-20 [TIP 542] Support for switchable Full Unicode support
+
+2020-01-21 [TIP 543] Eliminate `TCL_INTERP_DESTROYED` flag value
+
+2020-01-24 [TIP 559] Eliminate public routine `Tcl_FreeResult
+
+2020-01-31 (new) Implement 64-bit seek on Zip channels. (nijtmans)
+
+2020-02-28 [TIP 557] C++ support for Tcl
+
+2020-02-28 [TIP 562] Deprecate channel types 1-4
+
+2020-03-11 (bug)[234d6c] Segfault in [set l {}; lpop l] (sebres)
+
+2020-03-12 (bug) Crash in tests binary-79.[12] (porter)
+
+2020-03-13 [TIP 569] Eliminate Comments That Serve Lint
+
+2020-04-06 (bug)[dd010c] [string trim*] on astral characters (porter,nijtmans)
+
+2020-05-30 [TIP 551] Permit underscore in numerical literals in source code
+
+2020-07-03 [TIP 578] Death to TCL_DBGX
+
+2020-08-11 (bug)[e87000] Win32 crash in [fconfigure stdout] (werner,nijtmans)
+
+2020-09-06 (bug)[c1a376] deletion trace on imported ensemble (coulter)
+
+2020-09-13 [TIP 585] Promote the INDEX_TEMP_TABLE flag of Tcl_GetIndexFromObj*() to the public interface
+
+2020-09-15 (bug)[b5777d] crash in [string index abcd 0-0x10000000000000000]
+
+2020-09-19 [b9ecf3] revised stork mgmt [uplevel [list $cmd ...]] (coulter)
+
+2020-10-23 [TIP 587] Default utf-8 for source command
+
+2020-10-27 (bug)[11229b] test string-31.26.* (porter)
+
+2020-11-08 [TIP 582] Comments in Expressions
+
+2020-11-16 [TIP 586] C String Parsing Support for binary scan
+
+2020-12-07 [TIP 590] Recommend lowercase Package Names
+
+2021-01-06 Bump to tcltest 2.5.4
+
+2021-01-15 [TIP 481] `Tcl_GetStringFromObj()` with `size_t` length parameter
+
+2021-01-15 [TIP 592] End support: Windows XP, Server 2003, Vista, Server 2008
+
+2021-01-25 tzdata updated to Olson's tzdata2021a (nijtmans)
+
+2021-01-29 (bug)[113be1] zipfs on mac
+
+2021-03-15 [TIP 575] Switchable Tcl_UtfCharComplete()/Tcl_UtfNext()/Tcl_UtfPrev()
+
+2021-03-19 (new)[0221b9] Drop TCL_WINDOW_EVENTS from Tcl's [update idletasks]
+
+2021-03-30 (new)[4b4830] [chan truncate] for reflected channels
+
+2021-04-30 [TIP 597] "string is unicode" and better utf-8/utf-16/cesu-8 encodings
+
+2021-04-09 [TIP 598] export TclWinConvertError
+
+2021-05-15 (bug)[463b7a] segfault from Tcl_Unload (coulter)
+
+2021-05-15 (bug)[fb2a41] tclZipfs.c free all memory (coulter)
+
+2021-05-18 (bug)[688fcc,28027d] namespace teardown reform (coulter)
+
+- Released 8.7a5, Jun 18, 2021 --- http://core.tcl-lang.org/tcl/ for details -
diff --git a/compat/zlib/contrib/masmx64/inffas8664.c b/compat/zlib/contrib/masmx64/inffas8664.c
index e8af06f..aa861a3 100644
--- a/compat/zlib/contrib/masmx64/inffas8664.c
+++ b/compat/zlib/contrib/masmx64/inffas8664.c
@@ -1,186 +1,186 @@
-/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding
- * version for AMD64 on Windows using Microsoft C compiler
- *
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant
- *
- * inffas8664.c call function inffas8664fnc in inffasx64.asm
- * inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
- *
- * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also
- * slightly quicker on x86 systems because, instead of using rep movsb to copy
- * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
- * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
- * from http://fedora.linux.duke.edu/fc1_x86_64
- * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
- * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version,
- * when decompressing mozilla-source-1.3.tar.gz.
- *
- * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
- * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at
- * the moment. I have successfully compiled and tested this code with gcc2.96,
- * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S
- * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
- * enabled. I will attempt to merge the MMX code into this version. Newer
- * versions of this and inffast.S can be found at
- * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
- *
- */
-
-#include <stdio.h>
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* Mark Adler's comments from inffast.c: */
-
-/*
- Decode literal, length, and distance codes and write out the resulting
- literal and match bytes until either not enough input or output is
- available, an end-of-block is encountered, or a data error is encountered.
- When large enough input and output buffers are supplied to inflate(), for
- example, a 16K input buffer and a 64K output buffer, more than 95% of the
- inflate execution time is spent in this routine.
-
- Entry assumptions:
-
- state->mode == LEN
- strm->avail_in >= 6
- strm->avail_out >= 258
- start >= strm->avail_out
- state->bits < 8
-
- On return, state->mode is one of:
-
- LEN -- ran out of enough output space or enough available input
- TYPE -- reached end of block code, inflate() to interpret next block
- BAD -- error in block data
-
- Notes:
-
- - The maximum input bits used by a length/distance pair is 15 bits for the
- length code, 5 bits for the length extra, 15 bits for the distance code,
- and 13 bits for the distance extra. This totals 48 bits, or six bytes.
- Therefore if strm->avail_in >= 6, then there is enough input to avoid
- checking for available input while decoding.
-
- - The maximum bytes that a single length/distance pair can output is 258
- bytes, which is the maximum length that can be coded. inflate_fast()
- requires strm->avail_out >= 258 for each loop to avoid checking for
- output space.
- */
-
-
-
- typedef struct inffast_ar {
-/* 64 32 x86 x86_64 */
-/* ar offset register */
-/* 0 0 */ void *esp; /* esp save */
-/* 8 4 */ void *ebp; /* ebp save */
-/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */
-/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */
-/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */
-/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */
-/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */
-/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */
-/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */
-/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */
-/* 80 40 */ size_t /*unsigned long */hold; /* edx rdx local strm->hold */
-/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */
-/* 92 48 */ unsigned wsize; /* window size */
-/* 96 52 */ unsigned write; /* window write index */
-/*100 56 */ unsigned lmask; /* r12 mask for lcode */
-/*104 60 */ unsigned dmask; /* r13 mask for dcode */
-/*108 64 */ unsigned len; /* r14 match length */
-/*112 68 */ unsigned dist; /* r15 match distance */
-/*116 72 */ unsigned status; /* set when state chng*/
- } type_ar;
-#ifdef ASMINF
-
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start; /* inflate()'s starting value for strm->avail_out */
-{
- struct inflate_state FAR *state;
- type_ar ar;
- void inffas8664fnc(struct inffast_ar * par);
-
-
-
-#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64))
-#define PAD_AVAIL_IN 6
-#define PAD_AVAIL_OUT 258
-#else
-#define PAD_AVAIL_IN 5
-#define PAD_AVAIL_OUT 257
-#endif
-
- /* copy state to local variables */
- state = (struct inflate_state FAR *)strm->state;
-
- ar.in = strm->next_in;
- ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
- ar.out = strm->next_out;
- ar.beg = ar.out - (start - strm->avail_out);
- ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
- ar.wsize = state->wsize;
- ar.write = state->wnext;
- ar.window = state->window;
- ar.hold = state->hold;
- ar.bits = state->bits;
- ar.lcode = state->lencode;
- ar.dcode = state->distcode;
- ar.lmask = (1U << state->lenbits) - 1;
- ar.dmask = (1U << state->distbits) - 1;
-
- /* decode literals and length/distances until end-of-block or not enough
- input data or output space */
-
- /* align in on 1/2 hold size boundary */
- while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
- ar.hold += (unsigned long)*ar.in++ << ar.bits;
- ar.bits += 8;
- }
-
- inffas8664fnc(&ar);
-
- if (ar.status > 1) {
- if (ar.status == 2)
- strm->msg = "invalid literal/length code";
- else if (ar.status == 3)
- strm->msg = "invalid distance code";
- else
- strm->msg = "invalid distance too far back";
- state->mode = BAD;
- }
- else if ( ar.status == 1 ) {
- state->mode = TYPE;
- }
-
- /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
- ar.len = ar.bits >> 3;
- ar.in -= ar.len;
- ar.bits -= ar.len << 3;
- ar.hold &= (1U << ar.bits) - 1;
-
- /* update state and return */
- strm->next_in = ar.in;
- strm->next_out = ar.out;
- strm->avail_in = (unsigned)(ar.in < ar.last ?
- PAD_AVAIL_IN + (ar.last - ar.in) :
- PAD_AVAIL_IN - (ar.in - ar.last));
- strm->avail_out = (unsigned)(ar.out < ar.end ?
- PAD_AVAIL_OUT + (ar.end - ar.out) :
- PAD_AVAIL_OUT - (ar.out - ar.end));
- state->hold = (unsigned long)ar.hold;
- state->bits = ar.bits;
- return;
-}
-
-#endif
+/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding
+ * version for AMD64 on Windows using Microsoft C compiler
+ *
+ * Copyright (C) 1995-2003 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ *
+ * Copyright (C) 2003 Chris Anderson <christop@charm.net>
+ * Please use the copyright conditions above.
+ *
+ * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant
+ *
+ * inffas8664.c call function inffas8664fnc in inffasx64.asm
+ * inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
+ *
+ * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also
+ * slightly quicker on x86 systems because, instead of using rep movsb to copy
+ * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
+ * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
+ * from http://fedora.linux.duke.edu/fc1_x86_64
+ * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
+ * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version,
+ * when decompressing mozilla-source-1.3.tar.gz.
+ *
+ * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
+ * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at
+ * the moment. I have successfully compiled and tested this code with gcc2.96,
+ * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S
+ * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
+ * enabled. I will attempt to merge the MMX code into this version. Newer
+ * versions of this and inffast.S can be found at
+ * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
+ *
+ */
+
+#include <stdio.h>
+#include "zutil.h"
+#include "inftrees.h"
+#include "inflate.h"
+#include "inffast.h"
+
+/* Mark Adler's comments from inffast.c: */
+
+/*
+ Decode literal, length, and distance codes and write out the resulting
+ literal and match bytes until either not enough input or output is
+ available, an end-of-block is encountered, or a data error is encountered.
+ When large enough input and output buffers are supplied to inflate(), for
+ example, a 16K input buffer and a 64K output buffer, more than 95% of the
+ inflate execution time is spent in this routine.
+
+ Entry assumptions:
+
+ state->mode == LEN
+ strm->avail_in >= 6
+ strm->avail_out >= 258
+ start >= strm->avail_out
+ state->bits < 8
+
+ On return, state->mode is one of:
+
+ LEN -- ran out of enough output space or enough available input
+ TYPE -- reached end of block code, inflate() to interpret next block
+ BAD -- error in block data
+
+ Notes:
+
+ - The maximum input bits used by a length/distance pair is 15 bits for the
+ length code, 5 bits for the length extra, 15 bits for the distance code,
+ and 13 bits for the distance extra. This totals 48 bits, or six bytes.
+ Therefore if strm->avail_in >= 6, then there is enough input to avoid
+ checking for available input while decoding.
+
+ - The maximum bytes that a single length/distance pair can output is 258
+ bytes, which is the maximum length that can be coded. inflate_fast()
+ requires strm->avail_out >= 258 for each loop to avoid checking for
+ output space.
+ */
+
+
+
+ typedef struct inffast_ar {
+/* 64 32 x86 x86_64 */
+/* ar offset register */
+/* 0 0 */ void *esp; /* esp save */
+/* 8 4 */ void *ebp; /* ebp save */
+/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */
+/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */
+/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */
+/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */
+/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */
+/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */
+/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */
+/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */
+/* 80 40 */ size_t /*unsigned long */hold; /* edx rdx local strm->hold */
+/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */
+/* 92 48 */ unsigned wsize; /* window size */
+/* 96 52 */ unsigned write; /* window write index */
+/*100 56 */ unsigned lmask; /* r12 mask for lcode */
+/*104 60 */ unsigned dmask; /* r13 mask for dcode */
+/*108 64 */ unsigned len; /* r14 match length */
+/*112 68 */ unsigned dist; /* r15 match distance */
+/*116 72 */ unsigned status; /* set when state chng*/
+ } type_ar;
+#ifdef ASMINF
+
+void inflate_fast(strm, start)
+z_streamp strm;
+unsigned start; /* inflate()'s starting value for strm->avail_out */
+{
+ struct inflate_state FAR *state;
+ type_ar ar;
+ void inffas8664fnc(struct inffast_ar * par);
+
+
+
+#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64))
+#define PAD_AVAIL_IN 6
+#define PAD_AVAIL_OUT 258
+#else
+#define PAD_AVAIL_IN 5
+#define PAD_AVAIL_OUT 257
+#endif
+
+ /* copy state to local variables */
+ state = (struct inflate_state FAR *)strm->state;
+
+ ar.in = strm->next_in;
+ ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
+ ar.out = strm->next_out;
+ ar.beg = ar.out - (start - strm->avail_out);
+ ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
+ ar.wsize = state->wsize;
+ ar.write = state->wnext;
+ ar.window = state->window;
+ ar.hold = state->hold;
+ ar.bits = state->bits;
+ ar.lcode = state->lencode;
+ ar.dcode = state->distcode;
+ ar.lmask = (1U << state->lenbits) - 1;
+ ar.dmask = (1U << state->distbits) - 1;
+
+ /* decode literals and length/distances until end-of-block or not enough
+ input data or output space */
+
+ /* align in on 1/2 hold size boundary */
+ while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
+ ar.hold += (unsigned long)*ar.in++ << ar.bits;
+ ar.bits += 8;
+ }
+
+ inffas8664fnc(&ar);
+
+ if (ar.status > 1) {
+ if (ar.status == 2)
+ strm->msg = "invalid literal/length code";
+ else if (ar.status == 3)
+ strm->msg = "invalid distance code";
+ else
+ strm->msg = "invalid distance too far back";
+ state->mode = BAD;
+ }
+ else if ( ar.status == 1 ) {
+ state->mode = TYPE;
+ }
+
+ /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+ ar.len = ar.bits >> 3;
+ ar.in -= ar.len;
+ ar.bits -= ar.len << 3;
+ ar.hold &= (1U << ar.bits) - 1;
+
+ /* update state and return */
+ strm->next_in = ar.in;
+ strm->next_out = ar.out;
+ strm->avail_in = (unsigned)(ar.in < ar.last ?
+ PAD_AVAIL_IN + (ar.last - ar.in) :
+ PAD_AVAIL_IN - (ar.in - ar.last));
+ strm->avail_out = (unsigned)(ar.out < ar.end ?
+ PAD_AVAIL_OUT + (ar.end - ar.out) :
+ PAD_AVAIL_OUT - (ar.out - ar.end));
+ state->hold = (unsigned long)ar.hold;
+ state->bits = ar.bits;
+ return;
+}
+
+#endif
diff --git a/compat/zlib/contrib/testzlib/testzlib.c b/compat/zlib/contrib/testzlib/testzlib.c
index 5f659de..8626c92 100644
--- a/compat/zlib/contrib/testzlib/testzlib.c
+++ b/compat/zlib/contrib/testzlib/testzlib.c
@@ -1,275 +1,275 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <windows.h>
-
-#include "zlib.h"
-
-
-void MyDoMinus64(LARGE_INTEGER *R,LARGE_INTEGER A,LARGE_INTEGER B)
-{
- R->HighPart = A.HighPart - B.HighPart;
- if (A.LowPart >= B.LowPart)
- R->LowPart = A.LowPart - B.LowPart;
- else
- {
- R->LowPart = A.LowPart - B.LowPart;
- R->HighPart --;
- }
-}
-
-#ifdef _M_X64
-// see http://msdn2.microsoft.com/library/twchhe95(en-us,vs.80).aspx for __rdtsc
-unsigned __int64 __rdtsc(void);
-void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
-{
- // printf("rdtsc = %I64x\n",__rdtsc());
- pbeginTime64->QuadPart=__rdtsc();
-}
-
-LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
-{
- LARGE_INTEGER LIres;
- unsigned _int64 res=__rdtsc()-((unsigned _int64)(beginTime64.QuadPart));
- LIres.QuadPart=res;
- // printf("rdtsc = %I64x\n",__rdtsc());
- return LIres;
-}
-#else
-#ifdef _M_IX86
-void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
-{
- DWORD dwEdx,dwEax;
- _asm
- {
- rdtsc
- mov dwEax,eax
- mov dwEdx,edx
- }
- pbeginTime64->LowPart=dwEax;
- pbeginTime64->HighPart=dwEdx;
-}
-
-void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
-{
- myGetRDTSC32(pbeginTime64);
-}
-
-LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
-{
- LARGE_INTEGER LIres,endTime64;
- myGetRDTSC32(&endTime64);
-
- LIres.LowPart=LIres.HighPart=0;
- MyDoMinus64(&LIres,endTime64,beginTime64);
- return LIres;
-}
-#else
-void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
-{
-}
-
-void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
-{
-}
-
-LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
-{
- LARGE_INTEGER lr;
- lr.QuadPart=0;
- return lr;
-}
-#endif
-#endif
-
-void BeginCountPerfCounter(LARGE_INTEGER * pbeginTime64,BOOL fComputeTimeQueryPerf)
-{
- if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64)))
- {
- pbeginTime64->LowPart = GetTickCount();
- pbeginTime64->HighPart = 0;
- }
-}
-
-DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
-{
- LARGE_INTEGER endTime64,ticksPerSecond,ticks;
- DWORDLONG ticksShifted,tickSecShifted;
- DWORD dwLog=16+0;
- DWORD dwRet;
- if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(&endTime64)))
- dwRet = (GetTickCount() - beginTime64.LowPart)*1;
- else
- {
- MyDoMinus64(&ticks,endTime64,beginTime64);
- QueryPerformanceFrequency(&ticksPerSecond);
-
-
- {
- ticksShifted = Int64ShrlMod32(*(DWORDLONG*)&ticks,dwLog);
- tickSecShifted = Int64ShrlMod32(*(DWORDLONG*)&ticksPerSecond,dwLog);
-
- }
-
- dwRet = (DWORD)((((DWORD)ticksShifted)*1000)/(DWORD)(tickSecShifted));
- dwRet *=1;
- }
- return dwRet;
-}
-
-int ReadFileMemory(const char* filename,long* plFileSize,unsigned char** pFilePtr)
-{
- FILE* stream;
- unsigned char* ptr;
- int retVal=1;
- stream=fopen(filename, "rb");
- if (stream==NULL)
- return 0;
-
- fseek(stream,0,SEEK_END);
-
- *plFileSize=ftell(stream);
- fseek(stream,0,SEEK_SET);
- ptr=malloc((*plFileSize)+1);
- if (ptr==NULL)
- retVal=0;
- else
- {
- if (fread(ptr, 1, *plFileSize,stream) != (*plFileSize))
- retVal=0;
- }
- fclose(stream);
- *pFilePtr=ptr;
- return retVal;
-}
-
-int main(int argc, char *argv[])
-{
- int BlockSizeCompress=0x8000;
- int BlockSizeUncompress=0x8000;
- int cprLevel=Z_DEFAULT_COMPRESSION ;
- long lFileSize;
- unsigned char* FilePtr;
- long lBufferSizeCpr;
- long lBufferSizeUncpr;
- long lCompressedSize=0;
- unsigned char* CprPtr;
- unsigned char* UncprPtr;
- long lSizeCpr,lSizeUncpr;
- DWORD dwGetTick,dwMsecQP;
- LARGE_INTEGER li_qp,li_rdtsc,dwResRdtsc;
-
- if (argc<=1)
- {
- printf("run TestZlib <File> [BlockSizeCompress] [BlockSizeUncompress] [compres. level]\n");
- return 0;
- }
-
- if (ReadFileMemory(argv[1],&lFileSize,&FilePtr)==0)
- {
- printf("error reading %s\n",argv[1]);
- return 1;
- }
- else printf("file %s read, %u bytes\n",argv[1],lFileSize);
-
- if (argc>=3)
- BlockSizeCompress=atol(argv[2]);
-
- if (argc>=4)
- BlockSizeUncompress=atol(argv[3]);
-
- if (argc>=5)
- cprLevel=(int)atol(argv[4]);
-
- lBufferSizeCpr = lFileSize + (lFileSize/0x10) + 0x200;
- lBufferSizeUncpr = lBufferSizeCpr;
-
- CprPtr=(unsigned char*)malloc(lBufferSizeCpr + BlockSizeCompress);
-
- BeginCountPerfCounter(&li_qp,TRUE);
- dwGetTick=GetTickCount();
- BeginCountRdtsc(&li_rdtsc);
- {
- z_stream zcpr;
- int ret=Z_OK;
- long lOrigToDo = lFileSize;
- long lOrigDone = 0;
- int step=0;
- memset(&zcpr,0,sizeof(z_stream));
- deflateInit(&zcpr,cprLevel);
-
- zcpr.next_in = FilePtr;
- zcpr.next_out = CprPtr;
-
-
- do
- {
- long all_read_before = zcpr.total_in;
- zcpr.avail_in = min(lOrigToDo,BlockSizeCompress);
- zcpr.avail_out = BlockSizeCompress;
- ret=deflate(&zcpr,(zcpr.avail_in==lOrigToDo) ? Z_FINISH : Z_SYNC_FLUSH);
- lOrigDone += (zcpr.total_in-all_read_before);
- lOrigToDo -= (zcpr.total_in-all_read_before);
- step++;
- } while (ret==Z_OK);
-
- lSizeCpr=zcpr.total_out;
- deflateEnd(&zcpr);
- dwGetTick=GetTickCount()-dwGetTick;
- dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
- dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
- printf("total compress size = %u, in %u step\n",lSizeCpr,step);
- printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
- printf("defcpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
- printf("defcpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
- }
-
- CprPtr=(unsigned char*)realloc(CprPtr,lSizeCpr);
- UncprPtr=(unsigned char*)malloc(lBufferSizeUncpr + BlockSizeUncompress);
-
- BeginCountPerfCounter(&li_qp,TRUE);
- dwGetTick=GetTickCount();
- BeginCountRdtsc(&li_rdtsc);
- {
- z_stream zcpr;
- int ret=Z_OK;
- long lOrigToDo = lSizeCpr;
- long lOrigDone = 0;
- int step=0;
- memset(&zcpr,0,sizeof(z_stream));
- inflateInit(&zcpr);
-
- zcpr.next_in = CprPtr;
- zcpr.next_out = UncprPtr;
-
-
- do
- {
- long all_read_before = zcpr.total_in;
- zcpr.avail_in = min(lOrigToDo,BlockSizeUncompress);
- zcpr.avail_out = BlockSizeUncompress;
- ret=inflate(&zcpr,Z_SYNC_FLUSH);
- lOrigDone += (zcpr.total_in-all_read_before);
- lOrigToDo -= (zcpr.total_in-all_read_before);
- step++;
- } while (ret==Z_OK);
-
- lSizeUncpr=zcpr.total_out;
- inflateEnd(&zcpr);
- dwGetTick=GetTickCount()-dwGetTick;
- dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
- dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
- printf("total uncompress size = %u, in %u step\n",lSizeUncpr,step);
- printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
- printf("uncpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
- printf("uncpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
- }
-
- if (lSizeUncpr==lFileSize)
- {
- if (memcmp(FilePtr,UncprPtr,lFileSize)==0)
- printf("compare ok\n");
-
- }
-
- return 0;
-}
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+
+#include "zlib.h"
+
+
+void MyDoMinus64(LARGE_INTEGER *R,LARGE_INTEGER A,LARGE_INTEGER B)
+{
+ R->HighPart = A.HighPart - B.HighPart;
+ if (A.LowPart >= B.LowPart)
+ R->LowPart = A.LowPart - B.LowPart;
+ else
+ {
+ R->LowPart = A.LowPart - B.LowPart;
+ R->HighPart --;
+ }
+}
+
+#ifdef _M_X64
+// see http://msdn2.microsoft.com/library/twchhe95(en-us,vs.80).aspx for __rdtsc
+unsigned __int64 __rdtsc(void);
+void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
+{
+ // printf("rdtsc = %I64x\n",__rdtsc());
+ pbeginTime64->QuadPart=__rdtsc();
+}
+
+LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
+{
+ LARGE_INTEGER LIres;
+ unsigned _int64 res=__rdtsc()-((unsigned _int64)(beginTime64.QuadPart));
+ LIres.QuadPart=res;
+ // printf("rdtsc = %I64x\n",__rdtsc());
+ return LIres;
+}
+#else
+#ifdef _M_IX86
+void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
+{
+ DWORD dwEdx,dwEax;
+ _asm
+ {
+ rdtsc
+ mov dwEax,eax
+ mov dwEdx,edx
+ }
+ pbeginTime64->LowPart=dwEax;
+ pbeginTime64->HighPart=dwEdx;
+}
+
+void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
+{
+ myGetRDTSC32(pbeginTime64);
+}
+
+LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
+{
+ LARGE_INTEGER LIres,endTime64;
+ myGetRDTSC32(&endTime64);
+
+ LIres.LowPart=LIres.HighPart=0;
+ MyDoMinus64(&LIres,endTime64,beginTime64);
+ return LIres;
+}
+#else
+void myGetRDTSC32(LARGE_INTEGER * pbeginTime64)
+{
+}
+
+void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64)
+{
+}
+
+LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
+{
+ LARGE_INTEGER lr;
+ lr.QuadPart=0;
+ return lr;
+}
+#endif
+#endif
+
+void BeginCountPerfCounter(LARGE_INTEGER * pbeginTime64,BOOL fComputeTimeQueryPerf)
+{
+ if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64)))
+ {
+ pbeginTime64->LowPart = GetTickCount();
+ pbeginTime64->HighPart = 0;
+ }
+}
+
+DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf)
+{
+ LARGE_INTEGER endTime64,ticksPerSecond,ticks;
+ DWORDLONG ticksShifted,tickSecShifted;
+ DWORD dwLog=16+0;
+ DWORD dwRet;
+ if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(&endTime64)))
+ dwRet = (GetTickCount() - beginTime64.LowPart)*1;
+ else
+ {
+ MyDoMinus64(&ticks,endTime64,beginTime64);
+ QueryPerformanceFrequency(&ticksPerSecond);
+
+
+ {
+ ticksShifted = Int64ShrlMod32(*(DWORDLONG*)&ticks,dwLog);
+ tickSecShifted = Int64ShrlMod32(*(DWORDLONG*)&ticksPerSecond,dwLog);
+
+ }
+
+ dwRet = (DWORD)((((DWORD)ticksShifted)*1000)/(DWORD)(tickSecShifted));
+ dwRet *=1;
+ }
+ return dwRet;
+}
+
+int ReadFileMemory(const char* filename,long* plFileSize,unsigned char** pFilePtr)
+{
+ FILE* stream;
+ unsigned char* ptr;
+ int retVal=1;
+ stream=fopen(filename, "rb");
+ if (stream==NULL)
+ return 0;
+
+ fseek(stream,0,SEEK_END);
+
+ *plFileSize=ftell(stream);
+ fseek(stream,0,SEEK_SET);
+ ptr=malloc((*plFileSize)+1);
+ if (ptr==NULL)
+ retVal=0;
+ else
+ {
+ if (fread(ptr, 1, *plFileSize,stream) != (*plFileSize))
+ retVal=0;
+ }
+ fclose(stream);
+ *pFilePtr=ptr;
+ return retVal;
+}
+
+int main(int argc, char *argv[])
+{
+ int BlockSizeCompress=0x8000;
+ int BlockSizeUncompress=0x8000;
+ int cprLevel=Z_DEFAULT_COMPRESSION ;
+ long lFileSize;
+ unsigned char* FilePtr;
+ long lBufferSizeCpr;
+ long lBufferSizeUncpr;
+ long lCompressedSize=0;
+ unsigned char* CprPtr;
+ unsigned char* UncprPtr;
+ long lSizeCpr,lSizeUncpr;
+ DWORD dwGetTick,dwMsecQP;
+ LARGE_INTEGER li_qp,li_rdtsc,dwResRdtsc;
+
+ if (argc<=1)
+ {
+ printf("run TestZlib <File> [BlockSizeCompress] [BlockSizeUncompress] [compres. level]\n");
+ return 0;
+ }
+
+ if (ReadFileMemory(argv[1],&lFileSize,&FilePtr)==0)
+ {
+ printf("error reading %s\n",argv[1]);
+ return 1;
+ }
+ else printf("file %s read, %u bytes\n",argv[1],lFileSize);
+
+ if (argc>=3)
+ BlockSizeCompress=atol(argv[2]);
+
+ if (argc>=4)
+ BlockSizeUncompress=atol(argv[3]);
+
+ if (argc>=5)
+ cprLevel=(int)atol(argv[4]);
+
+ lBufferSizeCpr = lFileSize + (lFileSize/0x10) + 0x200;
+ lBufferSizeUncpr = lBufferSizeCpr;
+
+ CprPtr=(unsigned char*)malloc(lBufferSizeCpr + BlockSizeCompress);
+
+ BeginCountPerfCounter(&li_qp,TRUE);
+ dwGetTick=GetTickCount();
+ BeginCountRdtsc(&li_rdtsc);
+ {
+ z_stream zcpr;
+ int ret=Z_OK;
+ long lOrigToDo = lFileSize;
+ long lOrigDone = 0;
+ int step=0;
+ memset(&zcpr,0,sizeof(z_stream));
+ deflateInit(&zcpr,cprLevel);
+
+ zcpr.next_in = FilePtr;
+ zcpr.next_out = CprPtr;
+
+
+ do
+ {
+ long all_read_before = zcpr.total_in;
+ zcpr.avail_in = min(lOrigToDo,BlockSizeCompress);
+ zcpr.avail_out = BlockSizeCompress;
+ ret=deflate(&zcpr,(zcpr.avail_in==lOrigToDo) ? Z_FINISH : Z_SYNC_FLUSH);
+ lOrigDone += (zcpr.total_in-all_read_before);
+ lOrigToDo -= (zcpr.total_in-all_read_before);
+ step++;
+ } while (ret==Z_OK);
+
+ lSizeCpr=zcpr.total_out;
+ deflateEnd(&zcpr);
+ dwGetTick=GetTickCount()-dwGetTick;
+ dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
+ dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
+ printf("total compress size = %u, in %u step\n",lSizeCpr,step);
+ printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
+ printf("defcpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
+ printf("defcpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
+ }
+
+ CprPtr=(unsigned char*)realloc(CprPtr,lSizeCpr);
+ UncprPtr=(unsigned char*)malloc(lBufferSizeUncpr + BlockSizeUncompress);
+
+ BeginCountPerfCounter(&li_qp,TRUE);
+ dwGetTick=GetTickCount();
+ BeginCountRdtsc(&li_rdtsc);
+ {
+ z_stream zcpr;
+ int ret=Z_OK;
+ long lOrigToDo = lSizeCpr;
+ long lOrigDone = 0;
+ int step=0;
+ memset(&zcpr,0,sizeof(z_stream));
+ inflateInit(&zcpr);
+
+ zcpr.next_in = CprPtr;
+ zcpr.next_out = UncprPtr;
+
+
+ do
+ {
+ long all_read_before = zcpr.total_in;
+ zcpr.avail_in = min(lOrigToDo,BlockSizeUncompress);
+ zcpr.avail_out = BlockSizeUncompress;
+ ret=inflate(&zcpr,Z_SYNC_FLUSH);
+ lOrigDone += (zcpr.total_in-all_read_before);
+ lOrigToDo -= (zcpr.total_in-all_read_before);
+ step++;
+ } while (ret==Z_OK);
+
+ lSizeUncpr=zcpr.total_out;
+ inflateEnd(&zcpr);
+ dwGetTick=GetTickCount()-dwGetTick;
+ dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE);
+ dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE);
+ printf("total uncompress size = %u, in %u step\n",lSizeUncpr,step);
+ printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.);
+ printf("uncpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.);
+ printf("uncpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart);
+ }
+
+ if (lSizeUncpr==lFileSize)
+ {
+ if (memcmp(FilePtr,UncprPtr,lFileSize)==0)
+ printf("compare ok\n");
+
+ }
+
+ return 0;
+}
diff --git a/doc/clock.n b/doc/clock.n
index 6b15fba..3c71f1e 100644
--- a/doc/clock.n
+++ b/doc/clock.n
@@ -823,7 +823,7 @@ the minus sign one west of Greenwich.
A time zone string conforming to the Posix specification of the \fBTZ\fR
environment variable will be recognized. The specification
may be found at
-\fIhttp://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html\fR.
+\fIhttps://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html\fR.
.PP
If the Posix time zone string contains a DST (Daylight Savings Time)
part, but doesn't contain a rule stating when DST starts or ends,
@@ -847,7 +847,7 @@ to use it as a location name, as above.
.SH "LOCALIZATION"
.PP
Developers wishing to localize the date and time formatting and parsing
-are referred to \fIhttp://tip.tcl.tk/173\fR for a
+are referred to \fIhttps://tip.tcl-lang.org/173\fR for a
specification.
.SH "FREE FORM SCAN"
.PP
diff --git a/doc/cookiejar.n b/doc/cookiejar.n
index 0d8b81a..7d2f46b 100644
--- a/doc/cookiejar.n
+++ b/doc/cookiejar.n
@@ -182,7 +182,7 @@ set cookiedb ~/.tclcookies.db
http::configure -cookiejar [\fBhttp::cookiejar new\fR $cookiedb]
# No further explicit steps are required to use cookies
-set tok [http::geturl http://core.tcl.tk/]
+set tok [http::geturl http://core.tcl-lang.org/]
.CE
.PP
To only allow a particular domain to use cookies, perhaps because you only
@@ -205,7 +205,7 @@ set cookiedb ~/.tclcookies.db
http::configure -cookiejar [MyCookieJar new $cookiedb]
# No further explicit steps are required to use cookies
-set tok [http::geturl http://core.tcl.tk/]
+set tok [http::geturl http://core.tcl-lang.org/]
.CE
.SH "SEE ALSO"
http(n), oo::class(n), sqlite3(n)
diff --git a/doc/dde.n b/doc/dde.n
index cf7376e..8316af9 100644
--- a/doc/dde.n
+++ b/doc/dde.n
@@ -172,7 +172,7 @@ particularly important website:
.PP
.CS
package require dde
-\fBdde execute\fR -async iexplore WWW_OpenURL http://www.tcl.tk/
+\fBdde execute\fR -async iexplore WWW_OpenURL http://www.tcl-lang.org/
.CE
.SH "SEE ALSO"
tk(n), winfo(n), send(n)
diff --git a/doc/tm.n b/doc/tm.n
index d5c3cc7..bdc167a 100644
--- a/doc/tm.n
+++ b/doc/tm.n
@@ -298,9 +298,9 @@ environment variables:
.SH "SEE ALSO"
package(n), Tcl Improvement Proposal #189
.QW "\fITcl Modules\fR"
-(online at http://tip.tcl.tk/189.html), Tcl Improvement Proposal #190
+(online at https://tip.tcl-lang.org/189.html), Tcl Improvement Proposal #190
.QW "\fIImplementation Choices for Tcl Modules\fR"
-(online at http://tip.tcl.tk/190.html)
+(online at https://tip.tcl-lang.org/190.html)
.SH "KEYWORDS"
modules, package
.\" Local Variables:
diff --git a/generic/tcl.h b/generic/tcl.h
index 968925d..4c774d8 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -50,10 +50,10 @@ extern "C" {
#define TCL_MAJOR_VERSION 8
#define TCL_MINOR_VERSION 7
#define TCL_RELEASE_LEVEL TCL_ALPHA_RELEASE
-#define TCL_RELEASE_SERIAL 4
+#define TCL_RELEASE_SERIAL 6
#define TCL_VERSION "8.7"
-#define TCL_PATCH_LEVEL "8.7a4"
+#define TCL_PATCH_LEVEL "8.7a6"
#if !defined(TCL_NO_DEPRECATED) || defined(RC_INVOKED)
/*
@@ -2479,7 +2479,7 @@ EXTERN const char *TclZipfs_AppHook(int *argc, char ***argv);
++(objPtr)->refCount
/*
* Use do/while0 idiom for optimum correctness without compiler warnings.
- * http://c2.com/cgi/wiki?TrivialDoWhileLoop
+ * https://wiki.c2.com/?TrivialDoWhileLoop
*/
# undef Tcl_DecrRefCount
# define Tcl_DecrRefCount(objPtr) \
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index f083c37..0a4d145 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4866,6 +4866,7 @@ NRCommand(
int result)
{
Interp *iPtr = (Interp *) interp;
+ Tcl_Obj *listPtr;
iPtr->numLevels--;
@@ -4874,7 +4875,10 @@ NRCommand(
*/
if (data[1] && (data[1] != INT2PTR(1))) {
- TclNRAddCallback(interp, TclNRTailcallEval, data[1], NULL, NULL, NULL);
+ listPtr = (Tcl_Obj *)data[1];
+ data[1] = NULL;
+
+ TclNRAddCallback(interp, TclNRTailcallEval, listPtr, NULL, NULL, NULL);
}
/* OPT ??
@@ -9449,6 +9453,7 @@ TclNRYieldToObjCmd(
iPtr->execEnvPtr = corPtr->callerEEPtr;
TclSetTailcall(interp, listPtr);
+ corPtr->yieldPtr = listPtr;
iPtr->execEnvPtr = corPtr->eePtr;
return TclNRYieldObjCmd(INT2PTR(CORO_ACTIVATE_YIELDM), interp, 1, objv);
@@ -9646,6 +9651,22 @@ TclNRCoroutineActivateCallback(
*/
if (corPtr->stackLevel != stackLevel) {
+ NRE_callback *runPtr;
+
+ iPtr->execEnvPtr = corPtr->callerEEPtr;
+ if (corPtr->yieldPtr) {
+ for (runPtr = TOP_CB(interp); runPtr; runPtr = runPtr->nextPtr) {
+ if (runPtr->data[1] == corPtr->yieldPtr) {
+ runPtr->data[1] = NULL;
+ Tcl_DecrRefCount(corPtr->yieldPtr);
+ corPtr->yieldPtr = NULL;
+ break;
+ }
+ }
+ }
+ iPtr->execEnvPtr = corPtr->eePtr;
+
+
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot yield: C stack busy", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "CANT_YIELD",
@@ -9661,6 +9682,7 @@ TclNRCoroutineActivateCallback(
Tcl_Panic("Yield received an option which is not implemented");
}
+ corPtr->yieldPtr = NULL;
corPtr->stackLevel = NULL;
numLevels = iPtr->numLevels;
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index d6c280f..e2fb51b 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -2281,7 +2281,7 @@ UtfToUtfProc(
break;
}
src += len;
- if (!(flags & TCL_ENCODING_UTF)) {
+ if (!(flags & TCL_ENCODING_UTF) && (ch > 0x3FF)) {
if (ch > 0xFFFF) {
/* CESU-8 6-byte sequence for chars > U+FFFF */
ch -= 0x10000;
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index f9c2954..7e51c0d 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -2506,6 +2506,7 @@ TEBCresume(
Tcl_IncrRefCount(valuePtr);
iPtr->execEnvPtr = corPtr->callerEEPtr;
TclSetTailcall(interp, valuePtr);
+ corPtr->yieldPtr = valuePtr;
iPtr->execEnvPtr = corPtr->eePtr;
yieldParameter = (PTR2INT(NULL)+1); /*==CORO_ACTIVATE_YIELDM*/
diff --git a/generic/tclInt.h b/generic/tclInt.h
index ad9a5c1..05167b7 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -1496,6 +1496,11 @@ typedef struct CoroutineData {
int nargs; /* Number of args required for resuming this
* coroutine; -2 means "0 or 1" (default), -1
* means "any" */
+ Tcl_Obj *yieldPtr; /* The command to yield to. Stored here in
+ * order to reset splice point in
+ * TclNRCoroutineActivateCallback if the
+ * coroutine is busy.
+ */
} CoroutineData;
typedef struct ExecEnv {
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index dbb4cd9..b0392b1 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -32,6 +32,10 @@
#define TBLS 1
#endif
+#if !defined(_WIN32) && !defined(NO_DLFCN_H)
+#include <dlfcn.h>
+#endif
+
#ifdef HAVE_ZLIB
#include "zlib.h"
#include "crypt.h"
@@ -3907,6 +3911,12 @@ TclZipfs_TclLibrary(void)
if (ZipfsAppHookFindTclInit(dllName) == TCL_OK) {
return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
}
+#elif !defined(NO_DLFCN_H)
+ Dl_info dlinfo;
+ if (dladdr(TclZipfs_TclLibrary, &dlinfo) && (dlinfo.dli_fname != NULL)
+ && (ZipfsAppHookFindTclInit(dlinfo.dli_fname) == TCL_OK)) {
+ return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
+ }
#else
if (ZipfsAppHookFindTclInit(CFG_RUNTIME_LIBDIR "/" CFG_RUNTIME_DLLFILE) == TCL_OK) {
return Tcl_NewStringObj(zipfs_literal_tcl_library, -1);
diff --git a/library/cookiejar/cookiejar.tcl b/library/cookiejar/cookiejar.tcl
index cfa73ae..85f73b4 100644
--- a/library/cookiejar/cookiejar.tcl
+++ b/library/cookiejar/cookiejar.tcl
@@ -57,9 +57,9 @@ namespace eval [info object namespace ::http::cookiejar] {
variable version 0.2.0
variable domainlist \
- http://publicsuffix.org/list/effective_tld_names.dat
+ https://publicsuffix.org/list/public_suffix_list.dat
variable domainfile \
- [file join [file dirname [info script]] effective_tld_names.txt.gz]
+ [file join [file dirname [info script]] public_suffix_list.dat.gz]
# The list is directed to from http://publicsuffix.org/list/
variable loglevel info
variable vacuumtrigger 200
diff --git a/library/cookiejar/effective_tld_names.txt.gz b/library/cookiejar/public_suffix_list.dat.gz
index 13e08bb..65bf75a 100644
--- a/library/cookiejar/effective_tld_names.txt.gz
+++ b/library/cookiejar/public_suffix_list.dat.gz
Binary files differ
diff --git a/library/encoding/iso8859-11.enc b/library/encoding/iso8859-11.enc
new file mode 100644
index 0000000..d683453
--- /dev/null
+++ b/library/encoding/iso8859-11.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-11, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
+0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
+0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
+0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
+0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
+0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000
diff --git a/library/encoding/iso8859-7.enc b/library/encoding/iso8859-7.enc
index 0f93ac8..a46112f 100644
--- a/library/encoding/iso8859-7.enc
+++ b/library/encoding/iso8859-7.enc
@@ -12,7 +12,7 @@ S
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
-00A02018201900A30000000000A600A700A800A9000000AB00AC00AD00002015
+00A02018201900A320AC20AF00A600A700A800A9037A00AB00AC00AD00002015
00B000B100B200B303840385038600B703880389038A00BB038C00BD038E038F
0390039103920393039403950396039703980399039A039B039C039D039E039F
03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
diff --git a/library/init.tcl b/library/init.tcl
index e30296e..3f3b78f 100644
--- a/library/init.tcl
+++ b/library/init.tcl
@@ -19,7 +19,7 @@
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
-package require -exact tcl 8.7a4
+package require -exact tcl 8.7a6
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
diff --git a/libtommath/bn_mp_sqrt.c b/libtommath/bn_mp_sqrt.c
index 4481d3a..dcf28fd 100644
--- a/libtommath/bn_mp_sqrt.c
+++ b/libtommath/bn_mp_sqrt.c
@@ -4,6 +4,7 @@
/* SPDX-License-Identifier: Unlicense */
#ifndef NO_FLOATING_POINT
+#include <float.h>
#include <math.h>
#if (MP_DIGIT_BIT != 28) || (FLT_RADIX != 2) || (DBL_MANT_DIG != 53) || (DBL_MAX_EXP != 1024)
#define NO_FLOATING_POINT
diff --git a/tests/chanio.test b/tests/chanio.test
index 53e8020..2d26ac9 100644
--- a/tests/chanio.test
+++ b/tests/chanio.test
@@ -50,6 +50,7 @@ namespace eval ::tcl::test::io {
testConstraint notWinCI [expr {
$::tcl_platform(platform) ne "windows" || ![info exists ::env(CI)]}]
testConstraint notOSX [expr {$::tcl_platform(os) ne "Darwin"}]
+ testConstraint specialfiles [expr {[file exists /dev/zero] || [file exists NUL]}]
# You need a *very* special environment to do some tests. In particular,
# many file systems do not support large-files...
@@ -5509,6 +5510,60 @@ test chan-io-41.5 {Tcl_FileeventCmd: errors} -constraints fileevent -body {
chan event gorp who-knows
} -returnCodes error -result {bad event name "who-knows": must be readable or writable}
+
+test chan-io-41.6 {Tcl_FileeventCmd: directory} -constraints {fileevent unix} -setup {
+ set tempdir [::tcltests::tempdir]
+} -body {
+ set chan [open $tempdir]
+ chan event $chan readable [list ::apply [list {} {
+ variable success
+ set success 1
+ } [namespace current]]]
+ vwait [namespace current]::success
+ return $success
+} -cleanup {
+ close $chan
+ file delete -force tempdir
+} -result 1
+
+
+test chan-io-41.7 {Tcl_FileeventCmd: special} -constraints {
+ fileevent specialfiles
+} -body {
+ set special /dev/zero
+ if {![file exists $special]} {
+ set special NUL
+ }
+ set chan [open $special]
+ chan event $chan readable [list ::apply [list {} {
+ variable success
+ set success 1
+ } [namespace current]]]
+ vwait [namespace current]::success
+ return $success
+} -cleanup {
+ close $chan
+} -result 1
+
+
+test chan-io-41.8 {Tcl_FileeventCmd: symbolic link} -constraints {fileevent unix} -setup {
+ set tempdir [::tcltests::tempdir]
+} -body {
+ set target [makeFile {not again} thefile $tempdir]
+ set link [file join $tempdir thelin]
+ file link -symbolic $link $target
+ set chan [open $link]
+ chan event $chan readable [list ::apply [list {} {
+ variable success
+ set success 1
+ } [namespace current]]]
+ vwait [namespace current]::success
+ return $success
+} -cleanup {
+ close $chan
+ file delete -force $tempdir
+} -result 1
+
#
# Test chan event on a file
#
diff --git a/tests/coroutine.test b/tests/coroutine.test
index b129c03..c3023f7 100644
--- a/tests/coroutine.test
+++ b/tests/coroutine.test
@@ -755,6 +755,77 @@ test coroutine-7.12 {coro floor above street level #3008307} -body {
rename boom {}; rename cc {}; rename c {}
} -result {}
+
+test coroutine-7.13 {
+ issue f9800d52bd61f240
+
+ vwait is not NRE-enabled, and yieldto cannot find the right splicing spot
+} -body {
+ coroutine c0 apply [list {} {
+ variable done
+ yield
+ yieldto c1
+ after 0 c2
+ vwait [namespace current]::done
+ } [namespace current]]
+
+ coroutine c1 apply [list {} {
+ yield
+ tailcall c0
+ } [namespace current]]
+
+ coroutine c2 apply [list {} {
+ variable done
+ yield
+ yieldto try {yieldto c1} on error {} [list after 0 [list [info coroutine]]]
+ yieldto try {yieldto c1} on error {} [list after 0 [list [info coroutine]]]
+ set done 1
+ } [namespace current]]
+
+ after 0 [list [namespace which c0]]
+ vwait [namespace current]::done
+ return $done
+} -result 1
+
+
+test coroutine-7.14 {
+ issue 5106fddd4400e5b9
+
+ failure to yieldto is not the same thing as not calling yieldto in the
+ first place
+} -body {
+ variable done
+ variable done1
+
+ coroutine c0 ::apply [list {} {
+ yield
+ after 0 [list [namespace which c1]]
+ vwait [namespace current]::done1
+ } [namespace current]]
+
+ coroutine c1 ::apply [list {} {
+ variable done1
+ yield
+ yieldto try "yieldto [list [info coroutine]]" on error {} "
+ ::set [list [namespace current]]::done1 failure
+ ::set [list [namespace current]]::done0 failure
+ "
+ set done1 success
+
+ } [namespace current]]
+ after 1 [list [namespace which c0]]
+ vwait [namespace current]::done0
+ if {[namespace which [namespace current]::c1] ne {}} {
+ # prior to the fix for 5106fddd4400e5b9, the nested yieldto turned into a
+ # tailcall which was eventutally activated, causing control to return to
+ # c1. After the fix, that doesn't happen, so if c1 still exists call it
+ # one final time to allow it to finish and clean up
+ rename c1 {}
+ }
+ return [list $done0 $done1]
+} -result {failure failure}
+
+
test coroutine-8.0.0 {coro inject executed} -body {
coroutine demo apply {{} { foreach i {1 2} yield }}
demo
diff --git a/tests/encoding.test b/tests/encoding.test
index 0e80c09..cc15cde 100644
--- a/tests/encoding.test
+++ b/tests/encoding.test
@@ -429,6 +429,21 @@ test encoding-15.21 {UtfToUtfProc CESU-8 noncharacter} {
binary scan $y H* z
list [string length $y] $z
} {3 efbfbf}
+test encoding-15.22 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} {
+ set y [encoding convertto cesu-8 \x80]
+ binary scan $y H* z
+ list [string length $y] $z
+} {2 c280}
+test encoding-15.23 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} {
+ set y [encoding convertto cesu-8 \u100]
+ binary scan $y H* z
+ list [string length $y] $z
+} {2 c480}
+test encoding-15.24 {UtfToUtfProc CESU-8 bug [048dd20b4171c8da]} {
+ set y [encoding convertto cesu-8 \u3FF]
+ binary scan $y H* z
+ list [string length $y] $z
+} {2 cfbf}
test encoding-16.1 {Utf16ToUtfProc} -body {
set val [encoding convertfrom utf-16 NN]
@@ -762,7 +777,7 @@ test encoding-28.0 {all encodings load} -body {
llength $name
}
return $count
-} -result [expr {[info exists ::tcl_precision] ? 87 : 86}]
+} -result [expr {[info exists ::tcl_precision] ? 88 : 87}]
runtests
diff --git a/tools/encoding/cp1250.txt b/tools/encoding/cp1250.txt
index 081d776..ca94b25 100644
--- a/tools/encoding/cp1250.txt
+++ b/tools/encoding/cp1250.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
-0xFF 0x02D9 #DOT ABOVE
+0xFF 0x02D9 #DOT ABOVE \ No newline at end of file
diff --git a/tools/encoding/cp1251.txt b/tools/encoding/cp1251.txt
index 37eadbd..c990b66 100644
--- a/tools/encoding/cp1251.txt
+++ b/tools/encoding/cp1251.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
0xFD 0x044D #CYRILLIC SMALL LETTER E
0xFE 0x044E #CYRILLIC SMALL LETTER YU
-0xFF 0x044F #CYRILLIC SMALL LETTER YA
+0xFF 0x044F #CYRILLIC SMALL LETTER YA \ No newline at end of file
diff --git a/tools/encoding/cp1252.txt b/tools/encoding/cp1252.txt
index 2ca4486..7da1bc7 100644
--- a/tools/encoding/cp1252.txt
+++ b/tools/encoding/cp1252.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE #LATIN SMALL LETTER THORN
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
+0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS \ No newline at end of file
diff --git a/tools/encoding/cp1253.txt b/tools/encoding/cp1253.txt
index 2ba51a0..5063b70 100644
--- a/tools/encoding/cp1253.txt
+++ b/tools/encoding/cp1253.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x03CC #GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD #GREEK SMALL LETTER UPSILON WITH TONOS
0xFE 0x03CE #GREEK SMALL LETTER OMEGA WITH TONOS
-0xFF #UNDEFINED
+0xFF #UNDEFINED \ No newline at end of file
diff --git a/tools/encoding/cp1254.txt b/tools/encoding/cp1254.txt
index ca1a1eb..5f82b8f 100644
--- a/tools/encoding/cp1254.txt
+++ b/tools/encoding/cp1254.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0131 #LATIN SMALL LETTER DOTLESS I
0xFE 0x015F #LATIN SMALL LETTER S WITH CEDILLA
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
+0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS \ No newline at end of file
diff --git a/tools/encoding/cp1255.txt b/tools/encoding/cp1255.txt
index 341517f..2d05966 100644
--- a/tools/encoding/cp1255.txt
+++ b/tools/encoding/cp1255.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 1/7/2000
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC #UNDEFINED
0xFD 0x200E #LEFT-TO-RIGHT MARK
0xFE 0x200F #RIGHT-TO-LEFT MARK
-0xFF #UNDEFINED
+0xFF #UNDEFINED \ No newline at end of file
diff --git a/tools/encoding/cp1256.txt b/tools/encoding/cp1256.txt
index 0edd081..1f8cabb 100644
--- a/tools/encoding/cp1256.txt
+++ b/tools/encoding/cp1256.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 01/5/99
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x200E #LEFT-TO-RIGHT MARK
0xFE 0x200F #RIGHT-TO-LEFT MARK
-0xFF 0x06D2 #ARABIC LETTER YEH BARREE
+0xFF 0x06D2 #ARABIC LETTER YEH BARREE \ No newline at end of file
diff --git a/tools/encoding/cp1257.txt b/tools/encoding/cp1257.txt
index 97979d9..66ad8e6 100644
--- a/tools/encoding/cp1257.txt
+++ b/tools/encoding/cp1257.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
-0xFF 0x02D9 #DOT ABOVE
+0xFF 0x02D9 #DOT ABOVE \ No newline at end of file
diff --git a/tools/encoding/cp1258.txt b/tools/encoding/cp1258.txt
index 392310a..bd1b81c 100644
--- a/tools/encoding/cp1258.txt
+++ b/tools/encoding/cp1258.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x01B0 #LATIN SMALL LETTER U WITH HORN
0xFE 0x20AB #DONG SIGN
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
+0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS \ No newline at end of file
diff --git a/tools/encoding/cp874.txt b/tools/encoding/cp874.txt
index 1eb71df..210a566 100644
--- a/tools/encoding/cp874.txt
+++ b/tools/encoding/cp874.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 02/28/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -271,4 +271,4 @@
0xFC #UNDEFINED
0xFD #UNDEFINED
0xFE #UNDEFINED
-0xFF #UNDEFINED
+0xFF #UNDEFINED \ No newline at end of file
diff --git a/tools/encoding/cp932.txt b/tools/encoding/cp932.txt
index 36bfdbf..aa9daf7 100644
--- a/tools/encoding/cp932.txt
+++ b/tools/encoding/cp932.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 04/15/98
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -7995,4 +7995,4 @@
0xFC48 0x9D6B #CJK UNIFIED IDEOGRAPH
0xFC49 0xFA2D #CJK COMPATIBILITY IDEOGRAPH
0xFC4A 0x9E19 #CJK UNIFIED IDEOGRAPH
-0xFC4B 0x9ED1 #CJK UNIFIED IDEOGRAPH
+0xFC4B 0x9ED1 #CJK UNIFIED IDEOGRAPH \ No newline at end of file
diff --git a/tools/encoding/cp936.txt b/tools/encoding/cp936.txt
index 66a541b..13f714a 100644
--- a/tools/encoding/cp936.txt
+++ b/tools/encoding/cp936.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 1/7/2000
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -22062,4 +22062,4 @@
0xFE4C 0xFA24 #CJK COMPATIBILITY IDEOGRAPH
0xFE4D 0xFA27 #CJK COMPATIBILITY IDEOGRAPH
0xFE4E 0xFA28 #CJK COMPATIBILITY IDEOGRAPH
-0xFE4F 0xFA29 #CJK COMPATIBILITY IDEOGRAPH
+0xFE4F 0xFA29 #CJK COMPATIBILITY IDEOGRAPH \ No newline at end of file
diff --git a/tools/encoding/cp949.txt b/tools/encoding/cp949.txt
index 6bbda39..08fe554 100644
--- a/tools/encoding/cp949.txt
+++ b/tools/encoding/cp949.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 1/7/2000
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -17319,4 +17319,4 @@
0xFDFB 0x79A7 #CJK UNIFIED IDEOGRAPH
0xFDFC 0x7A00 #CJK UNIFIED IDEOGRAPH
0xFDFD 0x7FB2 #CJK UNIFIED IDEOGRAPH
-0xFDFE 0x8A70 #CJK UNIFIED IDEOGRAPH
+0xFDFE 0x8A70 #CJK UNIFIED IDEOGRAPH \ No newline at end of file
diff --git a/tools/encoding/cp950.txt b/tools/encoding/cp950.txt
index 7fadbbc..d67462e 100644
--- a/tools/encoding/cp950.txt
+++ b/tools/encoding/cp950.txt
@@ -5,7 +5,7 @@
# Table format: Format A
# Date: 1/7/2000
#
-# Contact: cpxlate@microsoft.com
+# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
@@ -13774,4 +13774,4 @@
0xF9FB 0x256E #BOX DRAWINGS LIGHT ARC DOWN AND LEFT
0xF9FC 0x2570 #BOX DRAWINGS LIGHT ARC UP AND RIGHT
0xF9FD 0x256F #BOX DRAWINGS LIGHT ARC UP AND LEFT
-0xF9FE 0x2593 #DARK SHADE
+0xF9FE 0x2593 #DARK SHADE \ No newline at end of file
diff --git a/tools/encoding/iso8859-1.txt b/tools/encoding/iso8859-1.txt
index 473ecab..5293ada 100644
--- a/tools/encoding/iso8859-1.txt
+++ b/tools/encoding/iso8859-1.txt
@@ -1,26 +1,14 @@
+# 8859-1.TXT
+# Date: 2015-12-02 20:19:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-1:1998 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,15 +23,16 @@
# The entries are in ISO/IEC 8859-1 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +289,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS \ No newline at end of file
diff --git a/tools/encoding/iso8859-10.txt b/tools/encoding/iso8859-10.txt
index 374a42b..7cf21f8 100644
--- a/tools/encoding/iso8859-10.txt
+++ b/tools/encoding/iso8859-10.txt
@@ -1,26 +1,14 @@
+# 8859-10.TXT
+# Date: 2015-12-02 21:53:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-10:1998 to Unicode
# Unicode version: 3.0
-# Table version: 1.1
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 October 11
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 October 11 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -36,14 +24,15 @@
#
# Version history
# 1.0 version new.
-# 1.1 corrected mistake in mapping of 0xA4
+# 1.1 corrected mistake in mapping of 0xA4
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +289,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
-0xFF 0x0138 # LATIN SMALL LETTER KRA
+0xFF 0x0138 # LATIN SMALL LETTER KRA \ No newline at end of file
diff --git a/tools/encoding/iso8859-11.txt b/tools/encoding/iso8859-11.txt
new file mode 100644
index 0000000..85d289f
--- /dev/null
+++ b/tools/encoding/iso8859-11.txt
@@ -0,0 +1,286 @@
+# 8859-11.TXT
+# Date: 2015-12-02 21:55:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Name: ISO/IEC 8859-11:2001 to Unicode
+# Unicode version: 3.2
+# Table version: 2.0
+# Table format: Format A
+# Date: 2002 October 7 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
+#
+# General notes:
+#
+# This table contains the data the Unicode Consortium has on how
+# ISO/IEC 8859-11:2001 characters map into Unicode.
+#
+# ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
+# the addition of 0xA0 NO-BREAK SPACE.
+#
+# Format: Three tab-separated columns
+# Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in ISO/IEC 8859-11 order.
+#
+# Version history:
+# 2002 October 7 Created
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
+# Updated versions of this file may be found in:
+# http://www.unicode.org/Public/MAPPINGS/
+#
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE
+0x80 0x0080 # <control>
+0x81 0x0081 # <control>
+0x82 0x0082 # <control>
+0x83 0x0083 # <control>
+0x84 0x0084 # <control>
+0x85 0x0085 # <control>
+0x86 0x0086 # <control>
+0x87 0x0087 # <control>
+0x88 0x0088 # <control>
+0x89 0x0089 # <control>
+0x8A 0x008A # <control>
+0x8B 0x008B # <control>
+0x8C 0x008C # <control>
+0x8D 0x008D # <control>
+0x8E 0x008E # <control>
+0x8F 0x008F # <control>
+0x90 0x0090 # <control>
+0x91 0x0091 # <control>
+0x92 0x0092 # <control>
+0x93 0x0093 # <control>
+0x94 0x0094 # <control>
+0x95 0x0095 # <control>
+0x96 0x0096 # <control>
+0x97 0x0097 # <control>
+0x98 0x0098 # <control>
+0x99 0x0099 # <control>
+0x9A 0x009A # <control>
+0x9B 0x009B # <control>
+0x9C 0x009C # <control>
+0x9D 0x009D # <control>
+0x9E 0x009E # <control>
+0x9F 0x009F # <control>
+0xA0 0x00A0 # NO-BREAK SPACE
+0xA1 0x0E01 # THAI CHARACTER KO KAI
+0xA2 0x0E02 # THAI CHARACTER KHO KHAI
+0xA3 0x0E03 # THAI CHARACTER KHO KHUAT
+0xA4 0x0E04 # THAI CHARACTER KHO KHWAI
+0xA5 0x0E05 # THAI CHARACTER KHO KHON
+0xA6 0x0E06 # THAI CHARACTER KHO RAKHANG
+0xA7 0x0E07 # THAI CHARACTER NGO NGU
+0xA8 0x0E08 # THAI CHARACTER CHO CHAN
+0xA9 0x0E09 # THAI CHARACTER CHO CHING
+0xAA 0x0E0A # THAI CHARACTER CHO CHANG
+0xAB 0x0E0B # THAI CHARACTER SO SO
+0xAC 0x0E0C # THAI CHARACTER CHO CHOE
+0xAD 0x0E0D # THAI CHARACTER YO YING
+0xAE 0x0E0E # THAI CHARACTER DO CHADA
+0xAF 0x0E0F # THAI CHARACTER TO PATAK
+0xB0 0x0E10 # THAI CHARACTER THO THAN
+0xB1 0x0E11 # THAI CHARACTER THO NANGMONTHO
+0xB2 0x0E12 # THAI CHARACTER THO PHUTHAO
+0xB3 0x0E13 # THAI CHARACTER NO NEN
+0xB4 0x0E14 # THAI CHARACTER DO DEK
+0xB5 0x0E15 # THAI CHARACTER TO TAO
+0xB6 0x0E16 # THAI CHARACTER THO THUNG
+0xB7 0x0E17 # THAI CHARACTER THO THAHAN
+0xB8 0x0E18 # THAI CHARACTER THO THONG
+0xB9 0x0E19 # THAI CHARACTER NO NU
+0xBA 0x0E1A # THAI CHARACTER BO BAIMAI
+0xBB 0x0E1B # THAI CHARACTER PO PLA
+0xBC 0x0E1C # THAI CHARACTER PHO PHUNG
+0xBD 0x0E1D # THAI CHARACTER FO FA
+0xBE 0x0E1E # THAI CHARACTER PHO PHAN
+0xBF 0x0E1F # THAI CHARACTER FO FAN
+0xC0 0x0E20 # THAI CHARACTER PHO SAMPHAO
+0xC1 0x0E21 # THAI CHARACTER MO MA
+0xC2 0x0E22 # THAI CHARACTER YO YAK
+0xC3 0x0E23 # THAI CHARACTER RO RUA
+0xC4 0x0E24 # THAI CHARACTER RU
+0xC5 0x0E25 # THAI CHARACTER LO LING
+0xC6 0x0E26 # THAI CHARACTER LU
+0xC7 0x0E27 # THAI CHARACTER WO WAEN
+0xC8 0x0E28 # THAI CHARACTER SO SALA
+0xC9 0x0E29 # THAI CHARACTER SO RUSI
+0xCA 0x0E2A # THAI CHARACTER SO SUA
+0xCB 0x0E2B # THAI CHARACTER HO HIP
+0xCC 0x0E2C # THAI CHARACTER LO CHULA
+0xCD 0x0E2D # THAI CHARACTER O ANG
+0xCE 0x0E2E # THAI CHARACTER HO NOKHUK
+0xCF 0x0E2F # THAI CHARACTER PAIYANNOI
+0xD0 0x0E30 # THAI CHARACTER SARA A
+0xD1 0x0E31 # THAI CHARACTER MAI HAN-AKAT
+0xD2 0x0E32 # THAI CHARACTER SARA AA
+0xD3 0x0E33 # THAI CHARACTER SARA AM
+0xD4 0x0E34 # THAI CHARACTER SARA I
+0xD5 0x0E35 # THAI CHARACTER SARA II
+0xD6 0x0E36 # THAI CHARACTER SARA UE
+0xD7 0x0E37 # THAI CHARACTER SARA UEE
+0xD8 0x0E38 # THAI CHARACTER SARA U
+0xD9 0x0E39 # THAI CHARACTER SARA UU
+0xDA 0x0E3A # THAI CHARACTER PHINTHU
+0xDF 0x0E3F # THAI CURRENCY SYMBOL BAHT
+0xE0 0x0E40 # THAI CHARACTER SARA E
+0xE1 0x0E41 # THAI CHARACTER SARA AE
+0xE2 0x0E42 # THAI CHARACTER SARA O
+0xE3 0x0E43 # THAI CHARACTER SARA AI MAIMUAN
+0xE4 0x0E44 # THAI CHARACTER SARA AI MAIMALAI
+0xE5 0x0E45 # THAI CHARACTER LAKKHANGYAO
+0xE6 0x0E46 # THAI CHARACTER MAIYAMOK
+0xE7 0x0E47 # THAI CHARACTER MAITAIKHU
+0xE8 0x0E48 # THAI CHARACTER MAI EK
+0xE9 0x0E49 # THAI CHARACTER MAI THO
+0xEA 0x0E4A # THAI CHARACTER MAI TRI
+0xEB 0x0E4B # THAI CHARACTER MAI CHATTAWA
+0xEC 0x0E4C # THAI CHARACTER THANTHAKHAT
+0xED 0x0E4D # THAI CHARACTER NIKHAHIT
+0xEE 0x0E4E # THAI CHARACTER YAMAKKAN
+0xEF 0x0E4F # THAI CHARACTER FONGMAN
+0xF0 0x0E50 # THAI DIGIT ZERO
+0xF1 0x0E51 # THAI DIGIT ONE
+0xF2 0x0E52 # THAI DIGIT TWO
+0xF3 0x0E53 # THAI DIGIT THREE
+0xF4 0x0E54 # THAI DIGIT FOUR
+0xF5 0x0E55 # THAI DIGIT FIVE
+0xF6 0x0E56 # THAI DIGIT SIX
+0xF7 0x0E57 # THAI DIGIT SEVEN
+0xF8 0x0E58 # THAI DIGIT EIGHT
+0xF9 0x0E59 # THAI DIGIT NINE
+0xFA 0x0E5A # THAI CHARACTER ANGKHANKHU
+0xFB 0x0E5B # THAI CHARACTER KHOMUT \ No newline at end of file
diff --git a/tools/encoding/iso8859-13.txt b/tools/encoding/iso8859-13.txt
index cd11b53..0dae9cb 100644
--- a/tools/encoding/iso8859-13.txt
+++ b/tools/encoding/iso8859-13.txt
@@ -1,26 +1,14 @@
+# 8859-13.TXT
+# Date: 2015-12-02 22:03:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-13:1998 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -34,12 +22,16 @@
#
# The entries are in ISO/IEC 8859-13 order.
#
+# Version history
+# 1.0 version: created
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -296,4 +288,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xFE 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK
+0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK \ No newline at end of file
diff --git a/tools/encoding/iso8859-14.txt b/tools/encoding/iso8859-14.txt
index 36038f4..3c3a024 100644
--- a/tools/encoding/iso8859-14.txt
+++ b/tools/encoding/iso8859-14.txt
@@ -1,27 +1,15 @@
+# 8859-14.TXT
+# Date: 2015-12-02 22:05:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-14:1998 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Markus Kuhn <mkuhn@acm.org>
-# Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
+# Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,12 +23,16 @@
#
# The entries are in ISO/IEC 8859-14 order.
#
+# Version history
+# 1.0 version: created
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -298,4 +290,3 @@
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/tools/encoding/iso8859-15.txt b/tools/encoding/iso8859-15.txt
index 1e31970..f21a763 100644
--- a/tools/encoding/iso8859-15.txt
+++ b/tools/encoding/iso8859-15.txt
@@ -1,27 +1,15 @@
+# 8859-15.TXT
+# Date: 2015-12-02 22:06:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Markus Kuhn <mkuhn@acm.org>
-# Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
+# Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -37,12 +25,16 @@
#
# Version history
#
+# Version history
+# 1.0 version: created
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +292,3 @@
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/tools/encoding/iso8859-16.txt b/tools/encoding/iso8859-16.txt
index 5353d74..e8f5a3e 100644
--- a/tools/encoding/iso8859-16.txt
+++ b/tools/encoding/iso8859-16.txt
@@ -1,27 +1,17 @@
+# 8859-16.TXT
+# Date: 2015-12-02 22:08:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-16:2001 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 2001 July 26
-# Authors: Markus Kuhn <mkuhn@acm.org>
+# Date: 2001 July 26 (header updated: 2015 December 02)
+# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
#
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
@@ -34,12 +24,16 @@
#
# The entries are in ISO/IEC 8859-16 order.
#
+# Version history
+# 1.0 version: created
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -296,4 +290,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS \ No newline at end of file
diff --git a/tools/encoding/iso8859-2.txt b/tools/encoding/iso8859-2.txt
index e45df25..9236280 100644
--- a/tools/encoding/iso8859-2.txt
+++ b/tools/encoding/iso8859-2.txt
@@ -1,26 +1,14 @@
+# 8859-2.TXT
+# Date: 2015-12-02 21:34:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO 8859-2:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,15 +23,16 @@
# The entries are in ISO/IEC 8859-2 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +289,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 # LATIN SMALL LETTER T WITH CEDILLA
-0xFF 0x02D9 # DOT ABOVE
+0xFF 0x02D9 # DOT ABOVE \ No newline at end of file
diff --git a/tools/encoding/iso8859-3.txt b/tools/encoding/iso8859-3.txt
index 9b6ac69..11ea5ca 100644
--- a/tools/encoding/iso8859-3.txt
+++ b/tools/encoding/iso8859-3.txt
@@ -1,26 +1,14 @@
+# 8859-3.TXT
+# Date: 2015-12-02 21:39:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-3:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,15 +23,16 @@
# The entries are in ISO/IEC 8859-3 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -293,4 +282,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
-0xFF 0x02D9 # DOT ABOVE
+0xFF 0x02D9 # DOT ABOVE \ No newline at end of file
diff --git a/tools/encoding/iso8859-4.txt b/tools/encoding/iso8859-4.txt
index 662e698..d5eed8e 100644
--- a/tools/encoding/iso8859-4.txt
+++ b/tools/encoding/iso8859-4.txt
@@ -1,26 +1,14 @@
+# 8859-4.TXT
+# Date: 2015-12-02 21:41:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-4:1998 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,15 +23,16 @@
# The entries are in ISO/IEC 8859-4 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +289,4 @@
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0169 # LATIN SMALL LETTER U WITH TILDE
0xFE 0x016B # LATIN SMALL LETTER U WITH MACRON
-0xFF 0x02D9 # DOT ABOVE
+0xFF 0x02D9 # DOT ABOVE \ No newline at end of file
diff --git a/tools/encoding/iso8859-5.txt b/tools/encoding/iso8859-5.txt
index a7ed1ce..5c01baf 100644
--- a/tools/encoding/iso8859-5.txt
+++ b/tools/encoding/iso8859-5.txt
@@ -1,26 +1,14 @@
+# 8859-5.TXT
+# Date: 2015-12-02 21:43:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO 8859-5:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,15 +23,16 @@
# The entries are in ISO/IEC 8859-5 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -300,4 +289,4 @@
0xFC 0x045C # CYRILLIC SMALL LETTER KJE
0xFD 0x00A7 # SECTION SIGN
0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
-0xFF 0x045F # CYRILLIC SMALL LETTER DZHE
+0xFF 0x045F # CYRILLIC SMALL LETTER DZHE \ No newline at end of file
diff --git a/tools/encoding/iso8859-6.txt b/tools/encoding/iso8859-6.txt
index 69ac7f5..565b547 100644
--- a/tools/encoding/iso8859-6.txt
+++ b/tools/encoding/iso8859-6.txt
@@ -1,26 +1,14 @@
+# 8859-6.TXT
+# Date: 2015-12-02 21:44:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO 8859-6:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -35,17 +23,18 @@
# The entries are in ISO/IEC 8859-6 order.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
-# of the Arabic digits (U+0660..U+0669).
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
+# of the Arabic digits (U+0660..U+0669).
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -257,4 +246,4 @@
0xEF 0x064F # ARABIC DAMMA
0xF0 0x0650 # ARABIC KASRA
0xF1 0x0651 # ARABIC SHADDA
-0xF2 0x0652 # ARABIC SUKUN
+0xF2 0x0652 # ARABIC SUKUN \ No newline at end of file
diff --git a/tools/encoding/iso8859-7.txt b/tools/encoding/iso8859-7.txt
index 52c42d0..9131ae3 100644
--- a/tools/encoding/iso8859-7.txt
+++ b/tools/encoding/iso8859-7.txt
@@ -1,34 +1,23 @@
+# 8859-7.TXT
+# Date: 2015-12-02 21:47:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
-# Name: ISO 8859-7:1987 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
+# Name: ISO 8859-7:2003 to Unicode
+# Unicode version: 4.0
+# Table version: 3.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 2003-Nov-12 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
-# ISO 8859-7:1987 characters map into Unicode.
+# ISO 8859-7:2003 characters map into Unicode.
#
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
-# and ECMA 118.
+# and ECMA 118. ISO 8859-7:2003 adds two currency signs
+# and one other character not in the earlier standard.
#
# Format: Three tab-separated columns
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
@@ -43,12 +32,17 @@
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
#
+# 2.0 version updates 1.0 version by adding mappings for the
+# three newly added characters 0xA4, 0xA5, 0xAA.
+#
+# 3.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
+#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -214,10 +208,13 @@
0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
0xA3 0x00A3 # POUND SIGN
+0xA4 0x20AC # EURO SIGN
+0xA5 0x20AF # DRACHMA SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
+0xAA 0x037A # GREEK YPOGEGRAMMENI
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
@@ -299,4 +296,4 @@
0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
-0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS \ No newline at end of file
diff --git a/tools/encoding/iso8859-8.txt b/tools/encoding/iso8859-8.txt
index bc8da4c..ff068f7 100644
--- a/tools/encoding/iso8859-8.txt
+++ b/tools/encoding/iso8859-8.txt
@@ -1,26 +1,14 @@
+# 8859-8.TXT
+# Date: 2015-12-02 21:50:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-8:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.1
+# Table version: 2.0
# Table format: Format A
-# Date: 2000-Jan-03
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 2000-Jan-03 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -37,15 +25,16 @@
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
-# 1.1 version updates to the published 8859-8:1999, correcting
+# 1.1 version updates to the published 8859-8:1999, correcting
# the mapping of 0xAF and adding mappings for LRM and RLM.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -267,4 +256,3 @@
0xFA 0x05EA # HEBREW LETTER TAV
0xFD 0x200E # LEFT-TO-RIGHT MARK
0xFE 0x200F # RIGHT-TO-LEFT MARK
-
diff --git a/tools/encoding/iso8859-9.txt b/tools/encoding/iso8859-9.txt
index 22901f1..c33d666 100644
--- a/tools/encoding/iso8859-9.txt
+++ b/tools/encoding/iso8859-9.txt
@@ -1,26 +1,14 @@
+# 8859-9.TXT
+# Date: 2015-12-02 21:51:00 GMT [KW]
+# © 2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Name: ISO/IEC 8859-9:1999 to Unicode
# Unicode version: 3.0
-# Table version: 1.0
+# Table version: 2.0
# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on magnetic media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
+# Date: 1999 July 27 (header updated: 2015 December 02)
+# Authors: Ken Whistler <ken@unicode.org>
#
# General notes:
#
@@ -37,15 +25,16 @@
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
#
# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
+# 1.0 version: updates 0.1 version by adding mappings for all
+# control characters.
+# 2.0 version: updates to copyright notice and terms of use; no
+# changes to character mappings
#
# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+# http://www.unicode.org/Public/MAPPINGS/
#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
+# Any comments or problems, contact us at:
+# http://www.unicode.org/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
@@ -304,4 +293,3 @@
0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/unix/Makefile.in b/unix/Makefile.in
index dde1aff..d5ba886 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -1524,7 +1524,7 @@ tclZlib.o: $(GENERIC_DIR)/tclZlib.c
$(CC) -c $(CC_SWITCHES) $(ZLIB_INCLUDE) $(GENERIC_DIR)/tclZlib.c
tclZipfs.o: $(GENERIC_DIR)/tclZipfs.c
- $(CC) -c $(CC_SWITCHES) \
+ $(CC) -c $(CC_SWITCHES) -D_GNU_SOURCE \
-DCFG_RUNTIME_DLLFILE="\"$(TCL_LIB_FILE)\"" \
-DCFG_RUNTIME_LIBDIR="\"$(libdir)\"" \
-I$(ZLIB_DIR) -I$(ZLIB_DIR)/contrib/minizip \
@@ -2268,7 +2268,7 @@ dist: $(UNIX_DIR)/configure $(UNIX_DIR)/tclConfig.h.in $(UNIX_DIR)/tcl.pc.in gen
mkdir $(DISTDIR)/library/$$i;\
cp -p $(TOP_DIR)/library/$$i/*.tcl $(DISTDIR)/library/$$i; \
done
- cp -p $(TOP_DIR)/library/cookiejar/*.txt.gz $(DISTDIR)/library/cookiejar
+ cp -p $(TOP_DIR)/library/cookiejar/*.dat.gz $(DISTDIR)/library/cookiejar
@mkdir $(DISTDIR)/library/encoding
cp -p $(TOP_DIR)/library/encoding/*.enc $(DISTDIR)/library/encoding
@mkdir $(DISTDIR)/library/msgs
@@ -2392,7 +2392,8 @@ html-tk: ${NATIVE_TCLSH}
BUILD_HTML = \
@${NATIVE_TCLSH} $(TOOL_DIR)/tcltk-man2html.tcl \
- --tcl --useversion=$(MAJOR_VERSION).$(MINOR_VERSION) --htmldir="$(HTML_INSTALL_DIR)" \
+ --useversion=$(MAJOR_VERSION).$(MINOR_VERSION) \
+ --htmldir="$(HTML_INSTALL_DIR)" \
--srcdir=$(TOP_DIR) $(BUILD_HTML_FLAGS)
#--------------------------------------------------------------------------
diff --git a/unix/README b/unix/README
index 3c1a207..b8adc71 100644
--- a/unix/README
+++ b/unix/README
@@ -8,11 +8,11 @@ MacOSX platform too, but they all depend on UNIX (POSIX/ANSI C) interfaces and
some of them only make sense under UNIX.
Updated forms of the information found in this file is available at:
- http://www.tcl.tk/doc/howto/compile.html#unix
+ https://www.tcl-tk.org/doc/howto/compile.html#unix
For information on platforms where Tcl is known to compile, along with any
porting notes for getting it to work on those platforms, see:
- http://www.tcl.tk/software/tcltk/platforms.html
+ https://www.tcl-tk.org/software/tcltk/platforms.html
The rest of this file contains instructions on how to do this. The release
should compile and run either "out of the box" or with trivial changes on any
@@ -89,7 +89,7 @@ How To Compile And Install Tcl:
--enable-dtrace Enable tcl DTrace provider (if DTrace is
available on the platform), c.f. tclDTrace.d
for descriptions of the probes made available,
- see http://wiki.tcl.tk/DTrace for more details
+ see https://wiki.tcl-lang.org/page/DTrace for more details
--with-encoding=ENCODING Specifies the encoding for compile-time
configuration values. Defaults to utf-8,
which is also sufficient for ASCII.
diff --git a/unix/configure b/unix/configure
index dbfb800..98d3a50 100755
--- a/unix/configure
+++ b/unix/configure
@@ -2683,7 +2683,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
TCL_VERSION=8.7
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=7
-TCL_PATCH_LEVEL="a4"
+TCL_PATCH_LEVEL="a6"
VERSION=${TCL_VERSION}
EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"}
diff --git a/unix/configure.ac b/unix/configure.ac
index 067fc70..485f13d 100644
--- a/unix/configure.ac
+++ b/unix/configure.ac
@@ -26,7 +26,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [
TCL_VERSION=8.7
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=7
-TCL_PATCH_LEVEL="a4"
+TCL_PATCH_LEVEL="a6"
VERSION=${TCL_VERSION}
EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"}
diff --git a/unix/tcl.pc.in b/unix/tcl.pc.in
index 2693cd8..21ea0ce 100644
--- a/unix/tcl.pc.in
+++ b/unix/tcl.pc.in
@@ -8,7 +8,7 @@ libfile=@TCL_LIB_FILE@
Name: Tool Command Language
Description: Tcl is a powerful, easy-to-learn dynamic programming language, suitable for a wide range of uses.
-URL: http://www.tcl.tk/
+URL: https://www.tcl-tk.org/
Version: @TCL_VERSION@@TCL_PATCH_LEVEL@
Requires.private: zlib >= 1.2.3, libtommath >= 1.2.0
Libs: -L${libdir} @TCL_LIB_FLAG@ @TCL_STUB_LIB_FLAG@
diff --git a/unix/tcl.spec b/unix/tcl.spec
index b62fa2b..3956126 100644
--- a/unix/tcl.spec
+++ b/unix/tcl.spec
@@ -4,12 +4,12 @@
Name: tcl
Summary: Tcl scripting language development environment
-Version: 8.7a4
+Version: 8.7a6
Release: 2
License: BSD
Group: Development/Languages
Source: http://prdownloads.sourceforge.net/tcl/tcl%{version}-src.tar.gz
-URL: http://www.tcl.tk/
+URL: https://www.tcl-lang.org/
Buildroot: /var/tmp/%{name}%{version}
%description
diff --git a/unix/tclEpollNotfy.c b/unix/tclEpollNotfy.c
index 23c88b2..287dfe2 100644
--- a/unix/tclEpollNotfy.c
+++ b/unix/tclEpollNotfy.c
@@ -223,22 +223,29 @@ PlatformEventsControl(
if (fstat(filePtr->fd, &fdStat) == -1) {
Tcl_Panic("fstat: %s", strerror(errno));
- } else if ((fdStat.st_mode & S_IFMT) == S_IFREG) {
- switch (op) {
- case EPOLL_CTL_ADD:
- if (isNew) {
- LIST_INSERT_HEAD(&tsdPtr->firstReadyFileHandlerPtr, filePtr,
- readyNode);
- }
- break;
- case EPOLL_CTL_DEL:
- LIST_REMOVE(filePtr, readyNode);
- break;
+ }
+
+ if (epoll_ctl(tsdPtr->eventsFd, op, filePtr->fd, &newEvent) == -1) {
+ switch (errno) {
+ case EPERM:
+ switch (op) {
+ case EPOLL_CTL_ADD:
+ if (isNew) {
+ LIST_INSERT_HEAD(&tsdPtr->firstReadyFileHandlerPtr, filePtr,
+ readyNode);
+ }
+ break;
+ case EPOLL_CTL_DEL:
+ LIST_REMOVE(filePtr, readyNode);
+ break;
+
+ }
+ break;
+ default:
+ Tcl_Panic("epoll_ctl: %s", strerror(errno));
}
- return;
- } else if (epoll_ctl(tsdPtr->eventsFd, op, filePtr->fd, &newEvent) == -1) {
- Tcl_Panic("epoll_ctl: %s", strerror(errno));
- }
+ }
+ return;
}
/*
diff --git a/unix/tclKqueueNotfy.c b/unix/tclKqueueNotfy.c
index ab3732d..6606c8c 100644
--- a/unix/tclKqueueNotfy.c
+++ b/unix/tclKqueueNotfy.c
@@ -182,7 +182,10 @@ PlatformEventsControl(
if (fstat(filePtr->fd, &fdStat) == -1) {
Tcl_Panic("fstat: %s", strerror(errno));
- } else if ((fdStat.st_mode & S_IFMT) == S_IFREG) {
+ } else if ((fdStat.st_mode & S_IFMT) == S_IFREG
+ || (fdStat.st_mode & S_IFMT) == S_IFDIR
+ || (fdStat.st_mode & S_IFMT) == S_IFLNK
+ ) {
switch (op) {
case EV_ADD:
if (isNew) {
diff --git a/win/Makefile.in b/win/Makefile.in
index 8e1ef95..383b9c7 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -541,7 +541,7 @@ $(TCLSH): $(TCLSH_OBJS) @LIBRARIES@ $(TCL_STUB_LIB_FILE) tclsh.$(RES) ${TCL_ZIP_
tclsh.$(RES) $(CC_EXENAME) $(LDFLAGS_CONSOLE)
$(COPY) tclsh.exe.manifest $(TCLSH).manifest
@VC_MANIFEST_EMBED_EXE@
- @if test "${ZIPFS_BUILD}" = "2" ; then \
+ if test "${ZIPFS_BUILD}" = "2" ; then \
cat ${TCL_ZIP_FILE} >> ${TCLSH}; \
${NATIVE_ZIP} -A ${TCLSH} \
|| echo 'ignore zip-error by adjust sfx process (not executable?)'; \
@@ -866,7 +866,7 @@ install-libraries: libraries install-tzdata install-msgs
$(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)"; \
done;
@echo "Installing package cookiejar 0.2"
- @for j in $(ROOT_DIR)/library/cookiejar/*.{tcl,txt.gz}; \
+ @for j in $(ROOT_DIR)/library/cookiejar/*.{tcl,gz}; \
do \
$(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/cookiejar0.2"; \
done;
diff --git a/win/README b/win/README
index 117db7e..df65d1d 100644
--- a/win/README
+++ b/win/README
@@ -9,7 +9,7 @@ that are specific to Microsoft Windows.
The information in this file is maintained on the web at:
- http://www.tcl.tk/doc/howto/compile.html#win
+ https://www.tcl-lang.org/doc/howto/compile.html#win
2. Compiling Tcl
----------------
@@ -29,7 +29,7 @@ In order to compile Tcl for Windows, you need the following:
or
- Cygwin + MinGW-w64 [http://cygwin.com/install.html]
+ Cygwin + MinGW-w64 [https://cygwin.com/install.html]
(win32 or win64)
or
@@ -42,11 +42,6 @@ In order to compile Tcl for Windows, you need the following:
Msys + MinGW-w64 [http://mingw-w64.sourceforge.net/]
(win32 or win64)
- or
-
- Msys + MinGW [http://www.mingw.org/download.shtml]
- (win32 only)
-
In practice, this release is built with Visual C++ 6.0 and the TEA
Makefile.
diff --git a/win/configure b/win/configure
index e484ff0..fead87c 100755
--- a/win/configure
+++ b/win/configure
@@ -2403,7 +2403,7 @@ SHELL=/bin/sh
TCL_VERSION=8.7
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=7
-TCL_PATCH_LEVEL="a4"
+TCL_PATCH_LEVEL="a6"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.4
diff --git a/win/configure.ac b/win/configure.ac
index 87ffd8d..d378115 100644
--- a/win/configure.ac
+++ b/win/configure.ac
@@ -15,7 +15,7 @@ SHELL=/bin/sh
TCL_VERSION=8.7
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=7
-TCL_PATCH_LEVEL="a4"
+TCL_PATCH_LEVEL="a6"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.4
diff --git a/win/makefile.vc b/win/makefile.vc
index e38c6e8..f56feec 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -965,24 +965,6 @@ install-binaries:
@$(CPY) "$(TCLSTUBLIB)" "$(LIB_INSTALL_DIR)\"
install-libraries: tclConfig tcl-nmake install-msgs install-tzdata
- @if not exist "$(SCRIPT_INSTALL_DIR)" \
- $(MKDIR) "$(SCRIPT_INSTALL_DIR)"
- @if not exist "$(SCRIPT_INSTALL_DIR)\opt0.4" \
- $(MKDIR) "$(SCRIPT_INSTALL_DIR)\opt0.4"
- @if not exist "$(SCRIPT_INSTALL_DIR)\cookiejar0.2" \
- $(MKDIR) "$(SCRIPT_INSTALL_DIR)\cookiejar0.2"
- @if not exist "$(MODULE_INSTALL_DIR)" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)"
- @if not exist "$(MODULE_INSTALL_DIR)\8.4" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)\8.4"
- @if not exist "$(MODULE_INSTALL_DIR)\8.4\platform" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)\8.4\platform"
- @if not exist "$(MODULE_INSTALL_DIR)\8.5" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)\8.5"
- @if not exist "$(MODULE_INSTALL_DIR)\8.6" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)\8.6"
- @if not exist "$(MODULE_INSTALL_DIR)\8.7" \
- $(MKDIR) "$(MODULE_INSTALL_DIR)\8.7"
@if not exist "$(LIB_INSTALL_DIR)\nmake" \
$(MKDIR) "$(LIB_INSTALL_DIR)\nmake"
@echo Installing header files
@@ -996,6 +978,8 @@ install-libraries: tclConfig tcl-nmake install-msgs install-tzdata
@$(CPY) "$(TOMMATHDIR)\tommath.h" "$(INCLUDE_INSTALL_DIR)\"
!if !$(TCL_EMBED_SCRIPTS)
@echo Installing library files to $(SCRIPT_INSTALL_DIR)
+ @if not exist "$(SCRIPT_INSTALL_DIR)" \
+ $(MKDIR) "$(SCRIPT_INSTALL_DIR)"
@$(CPY) "$(ROOT)\library\history.tcl" "$(SCRIPT_INSTALL_DIR)\"
@$(CPY) "$(ROOT)\library\init.tcl" "$(SCRIPT_INSTALL_DIR)\"
@$(CPY) "$(ROOT)\library\clock.tcl" "$(SCRIPT_INSTALL_DIR)\"
@@ -1016,23 +1000,39 @@ install-libraries: tclConfig tcl-nmake install-msgs install-tzdata
@$(CPY) "$(OUT_DIR)\tcl.nmake" "$(LIB_INSTALL_DIR)\nmake\"
!if !$(TCL_EMBED_SCRIPTS)
@echo Installing package cookiejar $(PKG_COOKIEJAR_VER)
+ @if not exist "$(SCRIPT_INSTALL_DIR)\cookiejar0.2" \
+ $(MKDIR) "$(SCRIPT_INSTALL_DIR)\cookiejar0.2"
@$(CPY) "$(ROOT)\library\cookiejar\*.tcl" \
"$(SCRIPT_INSTALL_DIR)\cookiejar0.2\"
@$(CPY) "$(ROOT)\library\cookiejar\*.gz" \
"$(SCRIPT_INSTALL_DIR)\cookiejar0.2\"
@echo Installing package opt $(PKG_OPT_VER)
+ @if not exist "$(SCRIPT_INSTALL_DIR)\opt0.4" \
+ $(MKDIR) "$(SCRIPT_INSTALL_DIR)\opt0.4"
@$(CPY) "$(ROOT)\library\opt\*.tcl" \
"$(SCRIPT_INSTALL_DIR)\opt0.4\"
+ @if not exist "$(MODULE_INSTALL_DIR)" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)"
@echo Installing package http $(PKG_HTTP_VER) as a Tcl Module
+ @if not exist "$(MODULE_INSTALL_DIR)\8.6" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)\8.6"
@$(COPY) "$(ROOT)\library\http\http.tcl" \
"$(MODULE_INSTALL_DIR)\8.6\http-$(PKG_HTTP_VER).tm"
@echo Installing package msgcat $(PKG_MSGCAT_VER) as a Tcl Module
+ @if not exist "$(MODULE_INSTALL_DIR)\8.7" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)\8.7"
@$(COPY) "$(ROOT)\library\msgcat\msgcat.tcl" \
"$(MODULE_INSTALL_DIR)\8.7\msgcat-$(PKG_MSGCAT_VER).tm"
@echo Installing package tcltest $(PKG_TCLTEST_VER) as a Tcl Module
+ @if not exist "$(MODULE_INSTALL_DIR)\8.5" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)\8.5"
@$(COPY) "$(ROOT)\library\tcltest\tcltest.tcl" \
"$(MODULE_INSTALL_DIR)\8.5\tcltest-$(PKG_TCLTEST_VER).tm"
@echo Installing package platform $(PKG_PLATFORM_VER) as a Tcl Module
+ @if not exist "$(MODULE_INSTALL_DIR)\8.4" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)\8.4"
+ @if not exist "$(MODULE_INSTALL_DIR)\8.4\platform" \
+ $(MKDIR) "$(MODULE_INSTALL_DIR)\8.4\platform"
@$(COPY) "$(ROOT)\library\platform\platform.tcl" \
"$(MODULE_INSTALL_DIR)\8.4\platform-$(PKG_PLATFORM_VER).tm"
@echo Installing package platform::shell $(PKG_SHELL_VER) as a Tcl Module
diff --git a/win/nmakehlp.c b/win/nmakehlp.c
index 972e8b9..71d727f 100644
--- a/win/nmakehlp.c
+++ b/win/nmakehlp.c
@@ -14,8 +14,10 @@
#define _CRT_SECURE_NO_DEPRECATE
#include <windows.h>
+#ifdef _MSC_VER
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "kernel32.lib")
+#endif
#include <stdio.h>
#include <math.h>
@@ -28,7 +30,7 @@
/* protos */
static int CheckForCompilerFeature(const char *option);
-static int CheckForLinkerFeature(const char **options, int count);
+static int CheckForLinkerFeature(char **options, int count);
static int IsIn(const char *string, const char *substring);
static int SubstituteFile(const char *substs, const char *filename);
static int QualifyPath(const char *path);
@@ -45,8 +47,8 @@ typedef struct {
char buffer[STATICBUFFERSIZE];
} pipeinfo;
-pipeinfo Out = {INVALID_HANDLE_VALUE, '\0'};
-pipeinfo Err = {INVALID_HANDLE_VALUE, '\0'};
+pipeinfo Out = {INVALID_HANDLE_VALUE, ""};
+pipeinfo Err = {INVALID_HANDLE_VALUE, ""};
/*
* exitcodes: 0 == no, 1 == yes, 2 == error
@@ -264,7 +266,7 @@ CheckForCompilerFeature(
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
- FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars],
+ FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPSTR)&msg[chars],
(300-chars), 0);
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL);
return 2;
@@ -317,7 +319,7 @@ CheckForCompilerFeature(
static int
CheckForLinkerFeature(
- const char **options,
+ char **options,
int count)
{
STARTUPINFO si;
@@ -398,7 +400,7 @@ CheckForLinkerFeature(
"Tried to launch: \"%s\", but got error [%u]: ", cmdline, err);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|
- FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPVOID)&msg[chars],
+ FORMAT_MESSAGE_MAX_WIDTH_MASK, 0L, err, 0, (LPSTR)&msg[chars],
(300-chars), 0);
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, lstrlen(msg), &err,NULL);
return 2;
@@ -494,7 +496,6 @@ GetVersionFromFile(
const char *match,
int numdots)
{
- size_t cbBuffer = 100;
static char szBuffer[100];
char *szResult = NULL;
FILE *fp = fopen(filename, "rt");
@@ -504,7 +505,7 @@ GetVersionFromFile(
* Read data until we see our match string.
*/
- while (fgets(szBuffer, cbBuffer, fp) != NULL) {
+ while (fgets(szBuffer, sizeof(szBuffer), fp) != NULL) {
LPSTR p, q;
p = strstr(szBuffer, match);
@@ -514,7 +515,7 @@ GetVersionFromFile(
*/
p += strlen(match);
- while (*p && !isdigit(*p)) {
+ while (*p && !isdigit((unsigned char)*p)) {
++p;
}
@@ -523,14 +524,13 @@ GetVersionFromFile(
*/
q = p;
- while (*q && (strchr("0123456789.ab", *q)) && ((!strchr(".ab", *q)
- && (!strchr("ab", q[-1])) || --numdots))) {
+ while (*q && (strchr("0123456789.ab", *q)) && (((!strchr(".ab", *q)
+ && !strchr("ab", q[-1])) || --numdots))) {
++q;
}
- memcpy(szBuffer, p, q - p);
- szBuffer[q-p] = 0;
- szResult = szBuffer;
+ *q = 0;
+ szResult = p;
break;
}
}
@@ -553,7 +553,7 @@ typedef struct list_item_t {
static list_item_t *
list_insert(list_item_t **listPtrPtr, const char *key, const char *value)
{
- list_item_t *itemPtr = malloc(sizeof(list_item_t));
+ list_item_t *itemPtr = (list_item_t *)malloc(sizeof(list_item_t));
if (itemPtr) {
itemPtr->key = strdup(key);
itemPtr->value = strdup(value);
@@ -602,9 +602,7 @@ SubstituteFile(
const char *substitutions,
const char *filename)
{
- size_t cbBuffer = 1024;
static char szBuffer[1024], szCopy[1024];
- char *szResult = NULL;
list_item_t *substPtr = NULL;
FILE *fp, *sp;
@@ -617,7 +615,7 @@ SubstituteFile(
sp = fopen(substitutions, "rt");
if (sp != NULL) {
- while (fgets(szBuffer, cbBuffer, sp) != NULL) {
+ while (fgets(szBuffer, sizeof(szBuffer), sp) != NULL) {
unsigned char *ks, *ke, *vs, *ve;
ks = (unsigned char*)szBuffer;
while (ks && *ks && isspace(*ks)) ++ks;
@@ -648,7 +646,7 @@ SubstituteFile(
* Run the substitutions over each line of the input
*/
- while (fgets(szBuffer, cbBuffer, fp) != NULL) {
+ while (fgets(szBuffer, sizeof(szBuffer), fp) != NULL) {
list_item_t *p = NULL;
for (p = substPtr; p != NULL; p = p->nextPtr) {
char *m = strstr(szBuffer, p->key);
@@ -665,7 +663,7 @@ SubstituteFile(
memcpy(szBuffer, szCopy, sizeof(szCopy));
}
}
- printf(szBuffer);
+ printf("%s", szBuffer);
}
list_free(&substPtr);
@@ -716,7 +714,8 @@ static int LocateDependencyHelper(const char *dir, const char *keypath)
{
HANDLE hSearch;
char path[MAX_PATH+1];
- int dirlen, keylen, ret;
+ size_t dirlen;
+ int keylen, ret;
WIN32_FIND_DATA finfo;
if (dir == NULL || keypath == NULL)
@@ -783,7 +782,8 @@ static int LocateDependencyHelper(const char *dir, const char *keypath)
*/
static int LocateDependency(const char *keypath)
{
- int i, ret;
+ size_t i;
+ int ret;
static const char *paths[] = {"..", "..\\..", "..\\..\\.."};
for (i = 0; i < (sizeof(paths)/sizeof(paths[0])); ++i) {
diff --git a/win/rules.vc b/win/rules.vc
index 71cf166..8a91b58 100644
--- a/win/rules.vc
+++ b/win/rules.vc
@@ -1123,7 +1123,7 @@ STUBPREFIX = $(PROJECT)stub
# TIP 430. Unused for 8.6 but no harm defining it to allow a common rules.vc
TCLSCRIPTZIPNAME = libtcl$(TCL_MAJOR_VERSION).$(TCL_MINOR_VERSION)$(TCL_PATCH_LETTER)$(TCL_RELEASE_SERIAL).zip
-TKSCRIPTZIPNAME = libtk$(TK_MAJOR_VERSION)$(TK_MINOR_VERSION)$(TK_PATCH_LETTER)$(TK_RELEASE_SERIAL).zip
+TKSCRIPTZIPNAME = libtk$(TK_MAJOR_VERSION).$(TK_MINOR_VERSION)$(TK_PATCH_LETTER)$(TK_RELEASE_SERIAL).zip
!if $(DOING_TCL)
TCLSHNAME = $(PROJECT)sh$(VERSION)$(SUFX).exe
diff --git a/win/tcl.m4 b/win/tcl.m4
index 3b3fc78..ee2256d 100644
--- a/win/tcl.m4
+++ b/win/tcl.m4
@@ -1067,7 +1067,7 @@ AC_DEFUN([SC_PROG_TCLSH], [
AC_DEFUN([SC_BUILD_TCLSH], [
AC_MSG_CHECKING([for tclsh in Tcl build directory])
- BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}
+ BUILD_TCLSH=${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}\${EXESUFFIX}
AC_MSG_RESULT($BUILD_TCLSH)
AC_SUBST(BUILD_TCLSH)
])
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index f54349b..4a07f04 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -3140,7 +3140,7 @@ TclNativeCreateNativeRep(
* If there is no "\\?\" prefix but there is a drive or UNC path prefix
* and the path is larger than MAX_PATH chars, no Win32 API function can
* handle that unless it is prefixed with the extended path prefix. See:
- * <http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath>
+ * <https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maxpath>
*/
if (((str[0] >= 'A' && str[0] <= 'Z') || (str[0] >= 'a' && str[0] <= 'z'))