aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--io/Makefile2
-rw-r--r--io/bug-ftw4.c124
-rw-r--r--io/ftw.c22
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/signals.c15
-rw-r--r--localedata/CHECKSUMS670
7 files changed, 575 insertions, 270 deletions
diff --git a/ChangeLog b/ChangeLog
index 0013f05bfc..d9d6b555b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ * io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns
+ non-zero.
+ * io/Makefile (tests): Add bug-ftw4.
+ * io/bug-ftw4.c: New test.
+
2003-10-27 Daniel Jacobowitz <drow@mvista.com>
* libio/libioP.h [_IO_USE_OLD_IO_FILE]
diff --git a/io/Makefile b/io/Makefile
index 14358ec93f..906d1e3301 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -57,7 +57,7 @@ static-only-routines = stat fstat lstat mknod stat64 fstat64 lstat64
others := pwd
test-srcs := ftwtest
tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \
- tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 tst-statvfs
+ tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 bug-ftw4 tst-statvfs
distribute := ftwtest-sh
diff --git a/io/bug-ftw4.c b/io/bug-ftw4.c
new file mode 100644
index 0000000000..0a652d3531
--- /dev/null
+++ b/io/bug-ftw4.c
@@ -0,0 +1,124 @@
+/* Test if ftw function doesn't leak fds.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <fcntl.h>
+#include <ftw.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+static int cb_called;
+
+static int
+cb (const char *name, const struct stat64 *st, int type)
+{
+ return cb_called++ & 1;
+}
+
+int
+main (void)
+{
+ char name[32] = "/tmp/ftwXXXXXX", *p;
+ int ret, i, result = 0, fd, fd1, fd2;
+
+ if (mkdtemp (name) == NULL)
+ {
+ printf ("Couldn't make temporary directory: %m\n");
+ exit (EXIT_FAILURE);
+ }
+ p = strchr (name, '\0');
+ strcpy (p, "/1");
+ if (mkdir (name, 0755) < 0)
+ {
+ printf ("Couldn't make temporary subdirectory: %m\n");
+ exit (EXIT_FAILURE);
+ }
+ *p = '\0';
+
+ ret = ftw64 (name, cb, 20);
+ if (ret != 1)
+ {
+ printf ("ftw64 returned %d instead of 1", ret);
+ result = 1;
+ }
+
+ fd = open (name, O_RDONLY);
+ if (fd < 0)
+ {
+ printf ("open failed: %m\n");
+ result = 1;
+ }
+ fd1 = open (name, O_RDONLY);
+ if (fd1 < 0)
+ {
+ printf ("open failed: %m\n");
+ result = 1;
+ }
+ else
+ close (fd1);
+ if (fd >= 0)
+ close (fd);
+
+ for (i = 0; i < 128; ++i)
+ {
+ ret = ftw64 (name, cb, 20);
+ if (ret != 1)
+ {
+ printf ("ftw64 returned %d instead of 1", ret);
+ result = 1;
+ }
+ }
+
+ fd = open (name, O_RDONLY);
+ if (fd < 0)
+ {
+ printf ("open failed: %m\n");
+ result = 1;
+ }
+ fd2 = open (name, O_RDONLY);
+ if (fd2 < 0)
+ {
+ printf ("open failed: %m\n");
+ result = 1;
+ }
+ else
+ close (fd2);
+ if (fd >= 0)
+ close (fd);
+
+ if (fd2 >= fd1 + 128)
+ {
+ printf ("ftw64 leaking fds: %d -> %d\n", fd1, fd2);
+ result = 1;
+ }
+
+ if (cb_called != 129 * 2)
+ {
+ printf ("callback called %d times\n", cb_called);
+ result = 1;
+ }
+
+ strcpy (p, "/1");
+ rmdir (name);
+ *p = '\0';
+ rmdir (name);
+ return result;
+}
diff --git a/io/ftw.c b/io/ftw.c
index c7c2038c06..6d5cedf63e 100644
--- a/io/ftw.c
+++ b/io/ftw.c
@@ -476,23 +476,27 @@ ftw_dir (struct ftw_data *data, struct STAT *st)
{
result = (*data->func) (data->dirbuf, st, FTW_D, &data->ftw);
if (result != 0)
- return result;
- }
-
- /* If necessary, change to this directory. */
- if (data->flags & FTW_CHDIR)
- {
- if (__fchdir (dirfd (dir.stream)) < 0)
{
- int save_err = errno;
+ int save_err;
+fail:
+ save_err = errno;
__closedir (dir.stream);
__set_errno (save_err);
if (data->actdir-- == 0)
data->actdir = data->maxdir - 1;
data->dirstreams[data->actdir] = NULL;
+ return result;
+ }
+ }
- return -1;
+ /* If necessary, change to this directory. */
+ if (data->flags & FTW_CHDIR)
+ {
+ if (__fchdir (dirfd (dir.stream)) < 0)
+ {
+ result = -1;
+ goto fail;
}
}
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 3102111eff..8f74133fce 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+2003-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ * signals.c (__pthread_sigaction): Set __sighandler[sig].old before
+ __libc_sigaction if it has been one of the special values before.
+
2003-10-06 Carlos O'Donell <carlos@baldric.uwo.ca>
* pthread.c (__pthread_self_stack): _STACK_GROWS_UP case added.
diff --git a/linuxthreads/signals.c b/linuxthreads/signals.c
index e1f67ab0e8..667754aa37 100644
--- a/linuxthreads/signals.c
+++ b/linuxthreads/signals.c
@@ -78,6 +78,7 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
{
struct sigaction newact;
struct sigaction *newactp;
+ __sighandler_t old = SIG_DFL;
if (sig == __pthread_sig_restart ||
sig == __pthread_sig_cancel ||
@@ -86,6 +87,8 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
__set_errno (EINVAL);
return -1;
}
+ if (sig > 0 && sig < NSIG)
+ old = (__sighandler_t) __sighandler[sig].old;
if (act)
{
newact = *act;
@@ -96,21 +99,27 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
newact.sa_handler = (__sighandler_t) __pthread_sighandler_rt;
else
newact.sa_handler = (__sighandler_t) __pthread_sighandler;
+ if (old == SIG_IGN || old == SIG_DFL || old == SIG_ERR)
+ __sighandler[sig].old = (arch_sighandler_t) act->sa_handler;
}
newactp = &newact;
}
else
newactp = NULL;
if (__libc_sigaction(sig, newactp, oact) == -1)
- return -1;
+ {
+ if (act)
+ __sighandler[sig].old = (arch_sighandler_t) old;
+ return -1;
+ }
if (sig > 0 && sig < NSIG)
{
if (oact != NULL
/* We may have inherited SIG_IGN from the parent, so return the
kernel's idea of the signal handler the first time
through. */
- && (__sighandler_t) __sighandler[sig].old != SIG_ERR)
- oact->sa_handler = (__sighandler_t) __sighandler[sig].old;
+ && old != SIG_ERR)
+ oact->sa_handler = old;
if (act)
/* For the assignment it does not matter whether it's a normal
or real-time signal. */
diff --git a/localedata/CHECKSUMS b/localedata/CHECKSUMS
index 4478a291c5..c0914ebc98 100644
--- a/localedata/CHECKSUMS
+++ b/localedata/CHECKSUMS
@@ -1,268 +1,424 @@
-97ec3e0e5a02ba50bf034cfcdea6469d locales/POSIX
-2ac9c8dab200035ab30329e025ae29be locales/af_ZA
-dc560d0dd71ca1cf4b3a3f422fe03b14 locales/ca_ES
-e2b2c79ac083d3c7151e9ede9360f6c0 locales/cs_CZ
-6ed0464590918f9b59731ea8b762900d locales/da_DK
-3c1e78eeb968fa5ef49b2672fe3da756 locales/de_AT
-6ee0be7a3b0033b35719419a9d84b27f locales/de_BE
-89ff8fb9bb9d2ea2fbfd409baccd7f59 locales/de_CH
-693b60488445f63d15207cd407884345 locales/de_DE
-969062eb7dd2196ae96c26b837f77591 locales/de_LU
-9a10c3ac70ab2d0d26ea2e8921199665 locales/el_GR
-1df05f9450263138fd5d4ee513642310 locales/en_AU
-0271ab37e58ddb29733ab3f89789f10c locales/en_BW
-bafe0469ff4621636a90e72acebb6f93 locales/en_CA
-688ec6a92b152ec3dfad2c52d7fd61ea locales/en_CA,2.5
-172ca6f82d8dfb3edd86ddf51e157a1e locales/en_DK
-94cd32fd51aa57d42255b9aa8ab7cee3 locales/en_DK.com
-8f322dd28903682c6a80a4a96861dc59 locales/en_GB
-aee81bf8761ef1e38f6adc39e5846b17 locales/en_IE
-e6accbc3458eba9e23156e99ce700439 locales/en_NZ
-e7e3223904043d185087bbb13bbc6e97 locales/en_US
-21fd1816ee6f32b6777d90222d660be3 locales/en_ZA
-d82de853fcd448dfd1a7e5d2bb114daf locales/en_ZW
-b2f02bb97de06de5a14bb4cc11877ad7 locales/es_AR
-41630e6e8f5a164fa90e10b202cc3eaf locales/es_BO
-b21ac1fea9726a62d7306d63e646c990 locales/es_CL
-8e3752256da403c9a9d66680deed45c8 locales/es_CO
-915aa3b6b7c73ffa00ceda87b8589495 locales/es_DO
-01175f59670c47e8bb62553c62d480ee locales/es_EC
-c9df76a675c75ab0000057ffcf826aee locales/es_ES
-0085a8fee4c77cfa02e5b2a700fa30d4 locales/es_GT
-de8e51deed4c7bf897cf886fea7772d6 locales/es_HN
-e07278e9fb181fd32e1a89f2025a43b7 locales/es_MX
-0f4c8e46eb4790f598137678ace1887c locales/es_PA
-15decb57c2ce997e76e6c5c217c44d1d locales/es_PE
-1e7d8a5c9f0abb506e3b7128a3f28980 locales/es_PY
-69dd105d588ef12726c51735d94e2d59 locales/es_SV
-97c3c0374bdd90fba624e0aa46bdb745 locales/es_US
-e24d7f66ec0f5fbbca742be937d680b5 locales/es_UY
-05d4a96a70ccaecd3472a1e9b40db513 locales/es_VE
-55b992cdb4b9adf72df968881a55045c locales/et_EE
-4d85ff4728e48450e1ae4f371c1fd12e locales/eu_ES
-b921bf84d560d5ab06111807981748e9 locales/fa_IR
-7fc821e07d7e228535dcc2b6c4fce8f1 locales/fi_FI
-35d631cc21c7cc9d1ce2933e1d94d81a locales/fo_FO
-419d0507292b954a0cee5be020771b00 locales/fr_BE
-d9e85f9c1dc5d2d9396afac293f0553c locales/fr_CA
-c1836dfa41f6eb43dc90900d2cd9b341 locales/fr_CA,2.13
-47b866d8e108070ebc393f18e5a11618 locales/fr_CH
-1d63fde6acfdc6c0dc03b36098a9f5ab locales/fr_FR
-8c17257001e3d33e8ab8c5dc9fae87a7 locales/fr_LU
-fe6ba034da4ce416f480a11a0b1f7356 locales/ga_IE
-37dc43894af12d76a399af38ec3b848e locales/gl_ES
-e5730342b747e9445b6448792d39d121 locales/he_IL
-8264c2cdffbead098d797ea1d861753f locales/hr_HR
-70ea8a47c5e1ea1af40fe059795108f6 locales/hu_HU
-0d145a65dfa353f93f78090719cb086d locales/id_ID
-d1089f83e82d9ea9256a82cd4b883a72 locales/in_ID
-c96cc2c4f753f6641d2744eb762dc4e3 locales/is_IS
-48252394b6e3f50cfcf00510eacd3683 locales/it_CH
-69b619bf7fad926c3c04349f1a316d0d locales/it_IT
-e5730342b747e9445b6448792d39d121 locales/iw_IL
-934faede9009fc486fc7453c16084aba locales/ja_JP
-2f97cb36f71528ce4dda636ddb96d0c5 locales/kl_GL
-880237172b8700c9645dd0cee6ad3a59 locales/ko_KR
-c7e3b3446446aa0e9fcc6dd1bdee6a5d locales/lt_LT
-b93e2cb7a11c1fbd22d0427aab4922d0 locales/lv_LV
-5be9df64a7bf8669701f0f9983dc1004 locales/nl_BE
-4d58de18535a2e1f98e6985d4fa5b671 locales/nl_NL
-ed41a02e1c2aec4eddc42fe7b5702bf4 locales/no_NO
-83bf7b71dd5b09e267d9e69d37bc8883 locales/pl_PL
-7e40f55558927e1754744a5b705d5089 locales/pt_BR
-3ed6e5080462030ceb847ef241ee1352 locales/pt_PT
-33324d57567944135cadec56b4b1e77d locales/ro_RO
-b4e8ac2dea2a3c736befb854c4edf45b locales/ru_RU
-2be354a9d753a14159067f4e98437bb4 locales/ru_UA
-e138da41f8586445c277a761ca2fc7df locales/sk_SK
-18408da663b6c4498c06d844ef14ae1b locales/sl_SI
-d1aefa7d8bb6354743b0e386fcbb0652 locales/sr_YU
-2c1087e408f00e70320ca5e4efd80617 locales/sv_FI
-c4e59d821962d68097175242220427ea locales/sv_SE
-669ade381cccccd0a3fac10bec9a2917 locales/th_TH
-f9ac3ea566e659cdcbc6dde43d7655fd locales/tr_TR
-d10211b77b9c19fd04080e9df5b03bf5 locales/uk_UA
-d3d797491b67d7207ea1bf00204515d2 locales/zh_CN
-0e7fdb8285e9ca6113454ce247d3863c charmaps/ANSI_X3.110-1983
-a586da90c49cd6875b8238a8878a7591 charmaps/ANSI_X3.4-1968
-5f18526bbba0326cf6af1861bcac141f charmaps/ASMO_449
-a9f7051d90b3cd83bc0ad8bd7bae0b02 charmaps/BALTIC
-8e1e15a295bd169737f22dc53f08ab0b charmaps/BS_4730
-93f30925bb39086d37e66e4d185ec84b charmaps/BS_VIEWDATA
-5c1b91f005c3c2c0ccc73aaf707fc998 charmaps/CP1125
-a907a00ba93ea9f46154cf3a80818e70 charmaps/CP1250
-2a92a00cd906127843d519aa937bf0c9 charmaps/CP1251
-10e2330202c5b24766d4d04ec46a56c1 charmaps/CP1252
-e26ab9843d95b3d200d94cf76981d09d charmaps/CP1253
-c31e2cbcee34f148786ca38c0a5570d2 charmaps/CP1254
-0c8a06d02ed67967129d6f7496d24b15 charmaps/CP1255
-f861218a23625c411f6e736e9ae7a6fa charmaps/CP1256
-bb9b52bfe2d51434c2d02755153ad215 charmaps/CP1257
-a6497ae372e62cc7b92c3cfd33efd5a0 charmaps/CP1258
-de28dafcea25942068f985ed626f2dc8 charmaps/CSA_Z243.4-1985-1
-052ef075f60624efa6e802e91410b47e charmaps/CSA_Z243.4-1985-2
-06e1bab71c5bb639445d86075cf7cef4 charmaps/CSA_Z243.4-1985-GR
-bfcceac1c7d2315b982cdf02e2870c39 charmaps/CSN_369103
-18eaa1c7aae3a6cb1609564c2df17c97 charmaps/CWI
-e3940ad883b5d632284be02e9e5fe0e6 charmaps/DEC-MCS
-5b2f992418cd91c2fd8f4404798d7ec3 charmaps/DIN_66003
-49813249f796b430323b39f5ac214c52 charmaps/DS_2089
-c4d27a4c8b3d1dab456c18e19b9cb581 charmaps/EBCDIC-AT-DE
-b6ee12056031057046fe9ac512f37eeb charmaps/EBCDIC-AT-DE-A
-f80c64718816f3bb3ed6d19f2d7b80dd charmaps/EBCDIC-CA-FR
-6e87df8f2e888deaa9f3470d57f59a15 charmaps/EBCDIC-DK-NO
-5732dfa3c6c28fff5da1471b0e56a05c charmaps/EBCDIC-DK-NO-A
-f259d26266edee351f070320a014e7eb charmaps/EBCDIC-ES
-12232db40f6339d548f8ed37eb6463f9 charmaps/EBCDIC-ES-A
-0408b369c135709d2994fff8a1f7dac4 charmaps/EBCDIC-ES-S
-1a3e377a76556eb17de9a269933943b1 charmaps/EBCDIC-FI-SE
-759dc0c6c3d6354fa61c1b04b59d709c charmaps/EBCDIC-FI-SE-A
-c98d95a6890fc7e5a8819e16d8f808e7 charmaps/EBCDIC-FR
-e3c41b832d7645e9190a86ddde244011 charmaps/EBCDIC-IS-FRISS
-05582f7a3153f505859710b0829faa12 charmaps/EBCDIC-IT
-24dd8e158b408851dffaeed975ea57e0 charmaps/EBCDIC-PT
-8e2215ef304cf77b7fdaceb76bfd27fd charmaps/EBCDIC-UK
-b2f02a121a48a3ac110bd6ee5263fd9b charmaps/EBCDIC-US
-ac706419ebd1e3a649fb681312ac8ce5 charmaps/ECMA-CYRILLIC
-7dddc0b7992cd333434b8a02959c50a0 charmaps/ES
-4c0b61e790c2d2470516111e1d2aa319 charmaps/ES2
-d0eb42459f3bfa8a576579d74f10f3fd charmaps/EUC-JP
-729b91a542fbf5f30a2e16258f21ceaf charmaps/EUC-KR
-20bb289e25334344a0662470db3e9a8c charmaps/GB2312
-a135f498373b1305167f1a6c699949a2 charmaps/GB_1988-80
-1e1e94ad8d1c12e9f10f7d6e1d870a68 charmaps/GOST_19768-74
-69a174dec8822dedba8b8aad36ba44df charmaps/GREEK-CCITT
-7963e4f78b3e7da2904db267b51ffdad charmaps/GREEK7
-98867deff09f3b96d80967768cef2860 charmaps/GREEK7-OLD
-a20e92ee764a1021470f63ddf2b4ac26 charmaps/HP-ROMAN8
-d2bb7b6934925cd3c48339932683d738 charmaps/IBM037
-75372e1aa9e87d8f21029beea062ebfa charmaps/IBM038
-00135b9fe204f67ffb3ca606c6e90e65 charmaps/IBM1004
-06a3321eb8e21e60ef061e547af5004d charmaps/IBM1026
-d6db928eeb35033d1ab07a61874afcc8 charmaps/IBM1047
-612e20c98d575f4926417557d59653a4 charmaps/IBM256
-5f610ea0f1199d48a60b735815e441ac charmaps/IBM273
-1918b8b2947201cf1abd09fde2a270f5 charmaps/IBM274
-f0ba496e0bb3928385bf8746e362aaea charmaps/IBM275
-d5e68a6b5e6e4a5673bd488e4754cbb1 charmaps/IBM277
-70c7fc622ca4d613c0d8bd160517e7b6 charmaps/IBM278
-8d75b9799cc7857f31779b68cd326deb charmaps/IBM280
-80d9bb633ddf8118a16a3c13c02e2775 charmaps/IBM281
-ace7a1f04f6ea723fc23de14ee07a686 charmaps/IBM284
-aa42a6d193da334341f83f5783e88346 charmaps/IBM285
-7d71d7200be8bfbc3b132813a1fa79de charmaps/IBM290
-04e570ddbb122b2fc06503d3f74573cb charmaps/IBM297
-6f33fae170d1d8f2e8805598a5d9faec charmaps/IBM420
-8b156f73e652c2d61b7ccd6a87f9a8ed charmaps/IBM423
-66042b458fb9ab18f17b10c8f28f6e36 charmaps/IBM424
-b7dbbe944c14f37b99c88589ce23f4f6 charmaps/IBM437
-fbfeade12b636f330ae301c8c4889066 charmaps/IBM500
-14624459eeab649848449d0e3f83acc1 charmaps/IBM850
-c758668ec74757819130a3fe0dc0c360 charmaps/IBM851
-c1788b0d0c362ad15d23ebe5aaeb035c charmaps/IBM852
-381e89c44f3563c165cad5649818f7e2 charmaps/IBM855
-9b8ee5f11d59b7ceb3714eb1448d9793 charmaps/IBM857
-32c16fd20b3fb11b92bb12e14de90825 charmaps/IBM860
-bc2e6b784e155a42c3329cb7b23cd653 charmaps/IBM861
-759ef63f459acb00c54fafed06b52fa3 charmaps/IBM862
-d663303a0f58dab4a6eb28a66a64b94e charmaps/IBM863
-754b798ba5e75bc05fd2171f425261ed charmaps/IBM864
-b6a61bfb10e0e97b6e6acfa85b974e54 charmaps/IBM865
-a97d1ae5b7e1042e9fd64b25ed471f40 charmaps/IBM866
+de03b81861a80e9fef5c1133360843bb charmaps/ANSI_X3.110-1983
+9cdbf98f2ef33457957ebcaf6a1f8cf4 charmaps/ANSI_X3.4-1968
+951fd6220705423baf0b8a5a102e3352 charmaps/ARMSCII-8
+c2316daf6629c132ba4e6fdadb0e6503 charmaps/ASMO_449
+33f96ca46035ae74ef4b231c5e42acd8 charmaps/BIG5
+56da6c91734e160c7931d268c37438fc charmaps/BIG5-HKSCS
+798dd6b57c3d0c122211aab2fab5736e charmaps/BS_4730
+09f7a9187907a3f3fcfaae8906b01579 charmaps/BS_VIEWDATA
+11013c76150d062df1a5fe899a614cf0 charmaps/CP10007
+284549ebab7699ddde23d273641751b9 charmaps/CP1125
+592572e42aa242f2f30f227bccc5afb0 charmaps/CP1250
+ad9dd6c3f4eaa95fe949fae0a5c1745d charmaps/CP1251
+b24132834355a7d7841a82aed7a83cda charmaps/CP1252
+2f2053bf482cdac273277a292653bdf6 charmaps/CP1253
+d859cd8d447aedcdf7c09c299a6469bf charmaps/CP1254
+c8ed5f1b2cfc26a3370697450be33943 charmaps/CP1255
+9b8e16bde8b9449f8f72bfa7fc7eb772 charmaps/CP1256
+c2d246cb44be36163085e5c6f04a31bc charmaps/CP1257
+1cdd6799992c1d9e238e78bb386876fe charmaps/CP1258
+a4ca07fac87e0c813e77f0cf95daecdb charmaps/CP737
+039969caf1003a6e91cb039df41c2fa0 charmaps/CP775
+d512d19a02da69dafd98ab0f7a27d0df charmaps/CP949
+2467367588810aa21ea1010d09b34d6b charmaps/CSA_Z243.4-1985-1
+02d1072b7e20d5d0d70dede9f51b9a9d charmaps/CSA_Z243.4-1985-2
+f2154153876719004abd05bd3a49c310 charmaps/CSA_Z243.4-1985-GR
+f12d99e29832227d3d659446c3bd1efe charmaps/CSN_369103
+4745e4c913944bb3a842eda1ab84f463 charmaps/CWI
+02795f59b18fd5e0a38a75983ee5f9b1 charmaps/DEC-MCS
+81954d04e26499ce6ebe34674ccb71e1 charmaps/DIN_66003
+8cdcc842a730c5febcda9074c5a9e20f charmaps/DS_2089
+2d23e4b626f5cfa5d40c344d9cdef29a charmaps/EBCDIC-AT-DE
+a3afba3b3742c929cf8228061eff9bce charmaps/EBCDIC-AT-DE-A
+51747fc3a0be01a8864c4ac463e47134 charmaps/EBCDIC-CA-FR
+da9f0a660776bf0a8d787a5512efa30f charmaps/EBCDIC-DK-NO
+4ab022770a9e8e685c9696fd2bb3e5d6 charmaps/EBCDIC-DK-NO-A
+554a94a84c21d7dfe35d2378967901ab charmaps/EBCDIC-ES
+75508c60b07ada5ed9d5511422fdee36 charmaps/EBCDIC-ES-A
+071618eb679d75c272e6f252fc34ef6f charmaps/EBCDIC-ES-S
+eeb2eb499bc7d7e023a49545258cd4c8 charmaps/EBCDIC-FI-SE
+4510fd482c6bf286ab144d2023896992 charmaps/EBCDIC-FI-SE-A
+31c70716871e13e55e3c4d2e409c1f6a charmaps/EBCDIC-FR
+0ccf405badf73924e43f7381015c5e7f charmaps/EBCDIC-IS-FRISS
+e7e3235e426d5484ff681e1e21f76de7 charmaps/EBCDIC-IT
+7ea01bd248ab4f9cf149d5462084a1e9 charmaps/EBCDIC-PT
+06f67e85e3edfaaba2844a11227d4b8e charmaps/EBCDIC-UK
+ab8146d876f7cea2fd79202141a56bf0 charmaps/EBCDIC-US
+4d59ebf5245387e6e48bc28e8ff3f683 charmaps/ECMA-CYRILLIC
+c8aa077828897c01f539f6728867827e charmaps/ES
+56d96f732da26b9c9687cade2559414e charmaps/ES2
+ca3364fd7f65248864973b25b951906c charmaps/EUC-JISX0213
+f33e30fe7a2b9e410a402ba1b8f2d6ab charmaps/EUC-JP
+00f24f0b8b34ec055a8bddf01f059329 charmaps/EUC-JP-MS
+fa30ad5600f0c999abb104f9a64cdf40 charmaps/EUC-KR
+838393203b84e028f76622920458a526 charmaps/EUC-TW
+f5856ca72c25cbbab09b25bd62077df7 charmaps/GB18030
+3ac7955343a281d44278036e69045bc4 charmaps/GB_1988-80
+f49f85a7390e23e7bf9af220b87e98fc charmaps/GB2312
+0469fc4833a4c4d78d9a2429ab7af816 charmaps/GBK
+731aa4c53f5f8a083ab361e6f4f30ad1 charmaps/GEORGIAN-ACADEMY
+145fac3915354997f3ddaa3d8250a229 charmaps/GEORGIAN-PS
+a78b5d94e07ed0290118ed0dc174e43c charmaps/GOST_19768-74
+830992d6e3db2d47c1704b933a823e95 charmaps/GREEK7
+6347508e7de055cbd671b13268aeac23 charmaps/GREEK7-OLD
+3f1bc260f3aa97f5e6cce8f833692e6f charmaps/GREEK-CCITT
+c992fd7297c822d5f8bd25684cbe68b6 charmaps/HP-ROMAN8
+795478f3edc5de4e4ecc9517d9c10258 charmaps/IBM037
+04c69d8a16cda189f3b6ec82e82c85bf charmaps/IBM038
+fcb4591ac80ea22a2c03ce8b4ba6e916 charmaps/IBM1004
+7397fcf22867b7ec839c92c9f6309708 charmaps/IBM1026
+bb438d8c996392cff5ee96001ab8d5ba charmaps/IBM1047
+53d2b26c2688e9cf5991a7c678cc5400 charmaps/IBM1124
+8fd05661e39ba8e2aefe753b44fcb47a charmaps/IBM1129
+f7c54fdfaf67cc97ac2b7db70d042e7a charmaps/IBM1132
+1ec982a6a1e44b504190e0c20ca383b6 charmaps/IBM1133
+cae180a3a7a98e7ca267fd0593e8d4d2 charmaps/IBM1160
+7ff59e7d51c14135ee55cb5b670b7ec9 charmaps/IBM1161
+0d897fe64ee1177bb3efa2e091698a67 charmaps/IBM1162
+0b8a87c4acaeb8b80aa53b02aa74ace7 charmaps/IBM1163
+1bb671b575ce2d5903730a3095a1e9f9 charmaps/IBM1164
+67a6575425a0cd2b1eee477ba3825a79 charmaps/IBM256
+7f4bf7665c80ebb374d340ff9dc6c2d4 charmaps/IBM273
+e833c32c6bc4532f339b073dec83c748 charmaps/IBM274
+b3f81aa5f3eafc70f8681272dfcf3278 charmaps/IBM275
+6d844171463960c44a4389f8733dece1 charmaps/IBM277
+7ab572bda6426937997bc0e793174333 charmaps/IBM278
+b50429e0d3f1d35cd96fbc28b84153a8 charmaps/IBM280
+f8290cb02a3abfedb892d0c8f3234c99 charmaps/IBM281
+455810c2183613b5802711787a895927 charmaps/IBM284
+e6ce68850339e3e7137b26cbaad47a87 charmaps/IBM285
+0fcfa6f27b21b49c5554079f9b5601e3 charmaps/IBM290
+478b0e853b8582b32163c3b923a08217 charmaps/IBM297
+25f4bb6afd2f89e4e765f4be2b111d28 charmaps/IBM420
+4e50f102de50eff1045bf9da4168d8fb charmaps/IBM423
+42332e3613dd030d4ba571cf4a92ca45 charmaps/IBM424
+1fbc46c1d1191bc52b222c306b81c73f charmaps/IBM437
+cd7c5a1ef8d643113e3b4793f3122c8a charmaps/IBM500
+2bd16747d13d214d657ea66342306ddc charmaps/IBM850
+1cdaf2970b6e2ec03ffefdd22a9d447f charmaps/IBM851
+5591da3bdf04653cc68f31b4c2ba3df7 charmaps/IBM852
+e88d449343c4a6f16fd437a5868b3fb0 charmaps/IBM855
+94960aeda652856c46774a9e03cbf808 charmaps/IBM856
+c3256856786484d090c1e938329807bc charmaps/IBM857
+898810c91e5567f2aed5edc47946dc23 charmaps/IBM860
+343745daadaf451e84b71ca9e58048fb charmaps/IBM861
+52c70d49960d46164e4e49acc47826e3 charmaps/IBM862
+6f04d0e070db520338f0d4a68b24cbb3 charmaps/IBM863
+df59b4d4de6059a4064ce31ba931cc8d charmaps/IBM864
+e2edcee690cf123113ed191e466b47a6 charmaps/IBM865
+2e21a8811f9d218ebdb6b3744eef04d3 charmaps/IBM866
ed3787887442af7cc8e03cb440bd22e3 charmaps/IBM866NAV
-3c687466bbe8924d247de33aefc3b39c charmaps/IBM868
-25a012edcc641079a92e48b7daaefb6c charmaps/IBM869
-f06c133a6a95e36ed4bfd25def526769 charmaps/IBM870
-3484dd8f95b187e5875dc73278485dd5 charmaps/IBM871
-549df48822f4d8c00e36ecd8ac12dad2 charmaps/IBM874
-2ac060b9d24b0627a69edaf9c8f9b20f charmaps/IBM875
-526e51ad0ce04ad9700b6444e83d4331 charmaps/IBM880
-d594cb73e9deddfbacf403223a39415e charmaps/IBM891
-13fd16925cebadb6a90fd4739ab128f8 charmaps/IBM903
-38bc42b9ccbe74fd83c17fe7035d378f charmaps/IBM904
-dafb03bc5ff222d549f49526aad39f14 charmaps/IBM905
-2f05e3ef0b85315493c1367db075f89f charmaps/IBM918
-b620d1383e848c22e993d83c929d4e2c charmaps/IEC_P27-1
-9cc72469de529887ae06cc49eba811b9 charmaps/INIS
-698eb5f931a6378ec100988b2e7080f8 charmaps/INIS-8
-3355267d5b626e15335bc3d9e9ceecec charmaps/INIS-CYRILLIC
-82997b03c60b1c75db7c684369afa784 charmaps/INVARIANT
-f73101f88ab99ae54aab390a39e37bd2 charmaps/ISIRI-3342
-00278485a2b71756393bdaff1d475f09 charmaps/ISO-8859-1
-97daa5d07db924785235076958fd0cf4 charmaps/ISO-8859-10
-65b513f374f59ab6c3065f6cabac073a charmaps/ISO-8859-13
-7a53d1853f07c116e8ceaac4b42c10f4 charmaps/ISO-8859-14
-291de15c8b16692c49cd7cbacf88c47a charmaps/ISO-8859-15
-b5aeeb41514765d0c6d59e209e34b489 charmaps/ISO-8859-16
-eb0956b77262e50119b476b8a7266ee7 charmaps/ISO-8859-2
-5f4b7f0d6d3123a5928f83d13b15b8ef charmaps/ISO-8859-3
-43a6fbbc2c730598a4c9924a4caf1a5a charmaps/ISO-8859-4
-cf08296dd3226cb37c14faf45e7bf7e0 charmaps/ISO-8859-5
-2aa504f779ecaa9b1ed1bd2095f9b690 charmaps/ISO-8859-6
-7aaf7cf69626b0db87314ec8b6f9a2c9 charmaps/ISO-8859-7
-e8820ebb915620714fe103155cd5429c charmaps/ISO-8859-8
-172863abae066ff434fdde13bfcbdf74 charmaps/ISO-8859-9
-7f859ae24e0921d1ed24e9415865c20f charmaps/ISO-IR-197
-35a007ff10462707262fddeaaed09a79 charmaps/ISO-IR-90
-29e4042157fbde4ecf3e36d82c976c62 charmaps/ISO_10367-BOX
+4f28c084eabcfe12bde019374129a161 charmaps/IBM868
+6ac7b3009a8bb910ceaecf75911275a6 charmaps/IBM869
+e1379d157c60f93c6df7fbdc2d565c8f charmaps/IBM870
+c8d9b36f2e44f24f58e5f081db30ff63 charmaps/IBM871
+b6e1d473e843432345c2c0f25284a153 charmaps/IBM874
+3b16722f23d9915bc90a85e8061e9d34 charmaps/IBM875
+c90729a71c9431cbb979a57a697cf83f charmaps/IBM880
+bf9dfd44b19373f7156ed4a082cd2cb3 charmaps/IBM891
+9b408f55af89f8aba5df1e13a676db97 charmaps/IBM903
+70fd65da56a106659a6febcd1fb38643 charmaps/IBM904
+53083d727fa2d49438b8f1fbab617448 charmaps/IBM905
+121bfefb46142b2ddd6e1560aefbd964 charmaps/IBM918
+6ef218728e9ff68b69ab256ba76f5417 charmaps/IBM922
+2a171f0031a60aa49418428df4a7b2dd charmaps/IEC_P27-1
+856d2be4bb0573c19887cbc420580dd8 charmaps/INIS
+a4275626c05a72c6e9305fefd8015863 charmaps/INIS-8
+7b69918d8cd14725a1ccc965808dd39e charmaps/INIS-CYRILLIC<