summaryrefslogtreecommitdiff
path: root/packages/vsftpd
diff options
context:
space:
mode:
Diffstat (limited to 'packages/vsftpd')
-rwxr-xr-xpackages/vsftpd/files/init41
-rwxr-xr-xpackages/vsftpd/files/vsftpd.conf108
-rw-r--r--packages/vsftpd/vsftpd-2.0.5/makefile.patch47
-rw-r--r--packages/vsftpd/vsftpd-2.0.5/nopam.patch12
-rw-r--r--packages/vsftpd/vsftpd-2.0.5/syscall.patch12
-rw-r--r--packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch4365
-rw-r--r--packages/vsftpd/vsftpd-charconv_2.0.5.bb50
-rw-r--r--packages/vsftpd/vsftpd_2.0.5.bb45
8 files changed, 0 insertions, 4680 deletions
diff --git a/packages/vsftpd/files/init b/packages/vsftpd/files/init
deleted file mode 100755
index d0ec010dc7..0000000000
--- a/packages/vsftpd/files/init
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-DAEMON=/usr/sbin/vsftpd
-NAME=vsftpd
-DESC="FTP Server"
-ARGS=""
-FTPDIR=/var/lib/ftp
-
-test -f $DAEMON || exit 0
-
-set -e
-
-case "$1" in
- start)
- echo -n "* starting $DESC: $NAME... "
- if ! test -d $FTPDIR; then
- mkdir -p $FTPDIR/in
- chown ftp $FTPDIR -R
- chmod a-w $FTPDIR
- chmod u+w $FTPDIR/in
- fi
- start-stop-daemon -S -b -x $DAEMON -- $ARGS
- echo "done."
- ;;
- stop)
- echo -n "* stopping $DESC: $NAME... "
- start-stop-daemon -K -x $DAEMON
- echo "done."
- ;;
- restart)
- echo "* restarting $DESC: $NAME... "
- $0 stop
- $0 start
- echo "done."
- ;;
- *)
- echo "Usage: $0 {start|stop|restart}"
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/packages/vsftpd/files/vsftpd.conf b/packages/vsftpd/files/vsftpd.conf
deleted file mode 100755
index 08f91e048d..0000000000
--- a/packages/vsftpd/files/vsftpd.conf
+++ /dev/null
@@ -1,108 +0,0 @@
-# Example config file /etc/vsftpd.conf
-#
-# The default compiled in settings are fairly paranoid. This sample file
-# loosens things up a bit, to make the ftp daemon more usable.
-# Please see vsftpd.conf.5 for all compiled in defaults.
-#
-# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
-# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
-# capabilities.
-
-# run standalone
-listen=YES
-
-# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
-anonymous_enable=YES
-#
-# Uncomment this to allow local users to log in.
-#local_enable=YES
-#
-# Uncomment this to enable any form of FTP write command.
-write_enable=YES
-#
-# Default umask for local users is 077. You may wish to change this to 022,
-# if your users expect that (022 is used by most other ftpd's)
-#local_umask=022
-#
-# Uncomment this to allow the anonymous FTP user to upload files. This only
-# has an effect if the above global write enable is activated. Also, you will
-# obviously need to create a directory writable by the FTP user.
-#anon_upload_enable=YES
-#
-# Uncomment this if you want the anonymous FTP user to be able to create
-# new directories.
-#anon_mkdir_write_enable=YES
-#
-# Activate directory messages - messages given to remote users when they
-# go into a certain directory.
-dirmessage_enable=YES
-#
-# Activate logging of uploads/downloads.
-xferlog_enable=YES
-#
-# Make sure PORT transfer connections originate from port 20 (ftp-data).
-connect_from_port_20=YES
-#
-# If you want, you can arrange for uploaded anonymous files to be owned by
-# a different user. Note! Using "root" for uploaded files is not
-# recommended!
-#chown_uploads=YES
-#chown_username=whoever
-#
-# You may override where the log file goes if you like. The default is shown
-# below.
-#xferlog_file=/var/log/vsftpd.log
-#
-# If you want, you can have your log file in standard ftpd xferlog format
-#xferlog_std_format=YES
-#
-# You may change the default value for timing out an idle session.
-#idle_session_timeout=600
-#
-# You may change the default value for timing out a data connection.
-#data_connection_timeout=120
-#
-# It is recommended that you define on your system a unique user which the
-# ftp server can use as a totally isolated and unprivileged user.
-#nopriv_user=ftpsecure
-#
-# Enable this and the server will recognise asynchronous ABOR requests. Not
-# recommended for security (the code is non-trivial). Not enabling it,
-# however, may confuse older FTP clients.
-#async_abor_enable=YES
-#
-# By default the server will pretend to allow ASCII mode but in fact ignore
-# the request. Turn on the below options to have the server actually do ASCII
-# mangling on files when in ASCII mode.
-# Beware that turning on ascii_download_enable enables malicious remote parties
-# to consume your I/O resources, by issuing the command "SIZE /big/file" in
-# ASCII mode.
-# These ASCII options are split into upload and download because you may wish
-# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
-# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
-# on the client anyway..
-#ascii_upload_enable=YES
-#ascii_download_enable=YES
-#
-# You may fully customise the login banner string:
-#ftpd_banner=Welcome to blah FTP service.
-#
-# You may specify a file of disallowed anonymous e-mail addresses. Apparently
-# useful for combatting certain DoS attacks.
-#deny_email_enable=YES
-# (default follows)
-#banned_email_file=/etc/vsftpd.banned_emails
-#
-# You may specify an explicit list of local users to chroot() to their home
-# directory. If chroot_local_user is YES, then this list becomes a list of
-# users to NOT chroot().
-#chroot_list_enable=YES
-# (default follows)
-#chroot_list_file=/etc/vsftpd.chroot_list
-#
-# You may activate the "-R" option to the builtin ls. This is disabled by
-# default to avoid remote users being able to cause excessive I/O on large
-# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
-# the presence of the "-R" option, so there is a strong case for enabling it.
-#ls_recurse_enable=YES
-
diff --git a/packages/vsftpd/vsftpd-2.0.5/makefile.patch b/packages/vsftpd/vsftpd-2.0.5/makefile.patch
deleted file mode 100644
index 3bf8f97671..0000000000
--- a/packages/vsftpd/vsftpd-2.0.5/makefile.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -ur vsftpd-2.0.1_org/Makefile vsftpd-2.0.1_patch/Makefile
---- vsftpd-2.0.1_org/Makefile 2004-06-06 18:21:27.000000000 +0200
-+++ vsftpd-2.0.1_patch/Makefile 2004-07-21 09:50:25.245576352 +0200
-@@ -5,7 +5,7 @@
- #CFLAGS = -g
- CFLAGS = -O2 -Wall -W -Wshadow #-pedantic -Werror -Wconversion
-
--LIBS = `./vsf_findlibs.sh`
-+LIBS = -lssl -lcrypto -lnsl -lresolv
- LINK = -Wl,-s
-
- OBJS = main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o \
-@@ -24,21 +24,21 @@
- $(CC) -o vsftpd $(OBJS) $(LINK) $(LIBS)
-
- install:
-- if [ -x /usr/local/sbin ]; then \
-- $(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
-+ if [ -x ${DESTDIR}/usr/local/sbin ]; then \
-+ $(INSTALL) -m 755 vsftpd ${DESTDIR}/usr/local/sbin/vsftpd; \
- else \
-- $(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
-- if [ -x /usr/local/man ]; then \
-- $(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
-- elif [ -x /usr/share/man ]; then \
-- $(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
-+ $(INSTALL) -m 755 vsftpd ${DESTDIR}/usr/sbin/vsftpd; fi
-+ if [ -x ${DESTDIR}/usr/local/man ]; then \
-+ $(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/local/man/man8/vsftpd.8; \
-+ $(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/local/man/man5/vsftpd.conf.5; \
-+ elif [ -x ${DESTDIR}/usr/share/man ]; then \
-+ $(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/share/man/man8/vsftpd.8; \
-+ $(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/share/man/man5/vsftpd.conf.5; \
- else \
-- $(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
-- if [ -x /etc/xinetd.d ]; then \
-- $(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
-+ $(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/man/man8/vsftpd.8; \
-+ $(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/man/man5/vsftpd.conf.5; fi
-+ if [ -x ${DESTDIR}/etc/xinetd.d ]; then \
-+ $(INSTALL) -m 644 xinetd.d/vsftpd ${DESTDIR}/etc/xinetd.d/vsftpd; fi
-
- clean:
- rm -f *.o *.swp vsftpd
diff --git a/packages/vsftpd/vsftpd-2.0.5/nopam.patch b/packages/vsftpd/vsftpd-2.0.5/nopam.patch
deleted file mode 100644
index 8e0559cad1..0000000000
--- a/packages/vsftpd/vsftpd-2.0.5/nopam.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur vsftpd-2.0.1_org/builddefs.h vsftpd-2.0.1_patch/builddefs.h
---- vsftpd-2.0.1_org/builddefs.h 2004-07-02 16:36:59.000000000 +0200
-+++ vsftpd-2.0.1_patch/builddefs.h 2004-07-21 09:34:49.044900488 +0200
-@@ -2,7 +2,7 @@
- #define VSF_BUILDDEFS_H
-
- #undef VSF_BUILD_TCPWRAPPERS
--#define VSF_BUILD_PAM
-+#undef VSF_BUILD_PAM
- #undef VSF_BUILD_SSL
-
- #endif /* VSF_BUILDDEFS_H */
diff --git a/packages/vsftpd/vsftpd-2.0.5/syscall.patch b/packages/vsftpd/vsftpd-2.0.5/syscall.patch
deleted file mode 100644
index b91cd5392b..0000000000
--- a/packages/vsftpd/vsftpd-2.0.5/syscall.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: vsftpd-2.0.5/sysdeputil.c
-===================================================================
---- vsftpd-2.0.5.orig/sysdeputil.c 2007-05-20 21:20:01.000000000 +0200
-+++ vsftpd-2.0.5/sysdeputil.c 2007-05-20 21:20:28.000000000 +0200
-@@ -159,7 +159,6 @@
- #include <linux/capability.h>
- #include <errno.h>
- #include <syscall.h>
--_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
- /* Gross HACK to avoid warnings - linux headers overlap glibc headers */
- #undef __NFDBITS
- #undef __FDMASK
diff --git a/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch b/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch
deleted file mode 100644
index affdd32075..0000000000
--- a/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch
+++ /dev/null
@@ -1,4365 +0,0 @@
-This patch is extracted and cleaned up version of filename character
-set conversion patches for vsftpd by Dmitriy Balashov,
-http://vsftpd.devnet.ru/eng/ . It provides dirty-pragmatics approach
-towards serving Windows codepages encoded filenames to Windows clients
-out of normal utf-8 filesystem.
-
-These patches will never be accepted upstream, they should never be merged
-to main vsftpd package, and they for sure void "vs" in "vsftpd". So again,
-they are for users to prefer stone-dead pragmatics. Use at you own risk.
-
-- Paul Sokolovsky, pmiscml@gmail.com
-
-diff -urN vsftpd-2.0.5.org/charconv.c vsftpd-2.0.5/charconv.c
---- vsftpd-2.0.5.org/charconv.c 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/charconv.c 2008-01-13 20:39:49.000000000 +0200
-@@ -0,0 +1,462 @@
-+/*
-+ * Part of Very Secure FTPd
-+ * Licence: GPL v2
-+ * Author: Dmitriy Balashov
-+ * charconv.c
-+ */
-+
-+#include "charconv.h"
-+#include "tunables.h"
-+#include "session.h"
-+#include "str.h"
-+#include "sysutil.h"
-+
-+#include "char_maps/utf8.map"
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+#include "char_maps/cyrillic.map"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+#include "char_maps/western.map"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+#include "char_maps/central.map"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+#include "char_maps/soutern.map"
-+#endif
-+
-+/* Tables mapping supported codepage names to runtime variables */
-+static struct available_charsets
-+{
-+ const char* p_charset_name;
-+ int p_variable;
-+}
-+available_charsets_array[] =
-+{
-+ { VSFTP_CP_NONE , VSFTP_C_NONE },
-+ // Cyrillic
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+ { VSFTP_CP_UTF_8 , VSFTP_C_UTF8 },
-+ { VSFTP_CP_UTF8 , VSFTP_C_UTF8 },
-+ { VSFTP_CP_WIN_1251 , VSFTP_C_1251 },
-+ { VSFTP_CP_WIN1251 , VSFTP_C_1251 },
-+ { VSFTP_CP_CP1251 , VSFTP_C_1251 },
-+ { VSFTP_CP_1251 , VSFTP_C_1251 },
-+ { VSFTP_CP_KOI8_R , VSFTP_C_878R },
-+ { VSFTP_CP_KOI8R , VSFTP_C_878R },
-+ { VSFTP_CP_CP878 , VSFTP_C_878R },
-+ { VSFTP_CP_878 , VSFTP_C_878R },
-+ { VSFTP_CP_CP878R , VSFTP_C_878R },
-+ { VSFTP_CP_878R , VSFTP_C_878R },
-+ { VSFTP_CP_KOI8_U , VSFTP_C_878U },
-+ { VSFTP_CP_KOI8U , VSFTP_C_878U },
-+ { VSFTP_CP_CP878U , VSFTP_C_878U },
-+ { VSFTP_CP_878U , VSFTP_C_878U },
-+ { VSFTP_CP_IBM866 , VSFTP_C_866 },
-+ { VSFTP_CP_CP866 , VSFTP_C_866 },
-+ { VSFTP_CP_866 , VSFTP_C_866 },
-+ { VSFTP_CP_ISO8859_5 , VSFTP_C_ISO5 },
-+ { VSFTP_CP_ISO5 , VSFTP_C_ISO5 },
-+#endif
-+ // Western European
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+ { VSFTP_CP_ISO8859_1 , VSFTP_C_ISO1 },
-+ { VSFTP_CP_ISO1 , VSFTP_C_ISO1 },
-+ { VSFTP_CP_LATIN1 , VSFTP_C_ISO1 },
-+ { VSFTP_CP_ISO8859_15, VSFTP_C_ISO15 },
-+ { VSFTP_CP_ISO15 , VSFTP_C_ISO15 },
-+ { VSFTP_CP_LATIN9 , VSFTP_C_ISO15 },
-+ { VSFTP_CP_WIN_1252 , VSFTP_C_1252 },
-+ { VSFTP_CP_WIN1252 , VSFTP_C_1252 },
-+ { VSFTP_CP_CP1252 , VSFTP_C_1252 },
-+ { VSFTP_CP_1252 , VSFTP_C_1252 },
-+#endif
-+ // Central European
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+ { VSFTP_CP_ISO8859_2 , VSFTP_C_ISO2 },
-+ { VSFTP_CP_ISO2 , VSFTP_C_ISO2 },
-+ { VSFTP_CP_LATIN2 , VSFTP_C_ISO2 },
-+ { VSFTP_CP_ISO8859_16, VSFTP_C_ISO16 },
-+ { VSFTP_CP_ISO16 , VSFTP_C_ISO16 },
-+ { VSFTP_CP_WIN_1250 , VSFTP_C_1250 },
-+ { VSFTP_CP_WIN1250 , VSFTP_C_1250 },
-+ { VSFTP_CP_CP1250 , VSFTP_C_1250 },
-+ { VSFTP_CP_1250 , VSFTP_C_1250 },
-+#endif
-+ // Soutern European
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+ { VSFTP_CP_ISO8859_3 , VSFTP_C_ISO3 },
-+ { VSFTP_CP_ISO3 , VSFTP_C_ISO3 },
-+ { VSFTP_CP_LATIN3 , VSFTP_C_ISO3 },
-+#endif
-+ { 0, 0 }
-+};
-+
-+/* Available convertions */
-+static struct available_convertions
-+{
-+ int local;
-+ int remote;
-+ int localCharset;
-+ int remoteCharset;
-+}
-+available_convertions_array[] =
-+{ // Cyrillic
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+ { VSFTP_C_UTF8 , VSFTP_C_1251 , VSFTP_CS_UTF8CYR , VSFTP_CS_1251 },
-+ { VSFTP_C_UTF8 , VSFTP_C_878R , VSFTP_CS_UTF8CYR , VSFTP_CS_878R },
-+ { VSFTP_C_UTF8 , VSFTP_C_878U , VSFTP_CS_UTF8CYR , VSFTP_CS_878U },
-+ { VSFTP_C_UTF8 , VSFTP_C_866 , VSFTP_CS_UTF8CYR , VSFTP_CS_866 },
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO5 , VSFTP_CS_UTF8CYR , VSFTP_CS_ISO5 },
-+ { VSFTP_C_1251 , VSFTP_C_UTF8 , VSFTP_CS_1251 , VSFTP_CS_UTF8CYR },
-+ { VSFTP_C_1251 , VSFTP_C_878R , VSFTP_CS_1251 , VSFTP_CS_878R },
-+ { VSFTP_C_1251 , VSFTP_C_878U , VSFTP_CS_1251 , VSFTP_CS_878U },
-+ { VSFTP_C_1251 , VSFTP_C_866 , VSFTP_CS_1251 , VSFTP_CS_866 },
-+ { VSFTP_C_1251 , VSFTP_C_ISO5 , VSFTP_CS_1251 , VSFTP_CS_ISO5 },
-+ { VSFTP_C_878R , VSFTP_C_UTF8 , VSFTP_CS_878R , VSFTP_CS_UTF8CYR },
-+ { VSFTP_C_878R , VSFTP_C_1251 , VSFTP_CS_878R , VSFTP_CS_1251 },
-+ { VSFTP_C_878R , VSFTP_C_878U , VSFTP_CS_878R , VSFTP_CS_878U },
-+ { VSFTP_C_878R , VSFTP_C_866 , VSFTP_CS_878R , VSFTP_CS_866 },
-+ { VSFTP_C_878R , VSFTP_C_ISO5 , VSFTP_CS_878R , VSFTP_CS_ISO5 },
-+ { VSFTP_C_866 , VSFTP_C_UTF8 , VSFTP_CS_866 , VSFTP_CS_UTF8CYR },
-+ { VSFTP_C_866 , VSFTP_C_1251 , VSFTP_CS_866 , VSFTP_CS_1251 },
-+ { VSFTP_C_866 , VSFTP_C_878R , VSFTP_CS_866 , VSFTP_CS_878R },
-+ { VSFTP_C_866 , VSFTP_C_878U , VSFTP_CS_866 , VSFTP_CS_878U },
-+ { VSFTP_C_866 , VSFTP_C_ISO5 , VSFTP_CS_866 , VSFTP_CS_ISO5 },
-+ { VSFTP_C_ISO5 , VSFTP_C_UTF8 , VSFTP_CS_ISO5 , VSFTP_CS_UTF8CYR },
-+ { VSFTP_C_ISO5 , VSFTP_C_1251 , VSFTP_CS_ISO5 , VSFTP_CS_1251 },
-+ { VSFTP_C_ISO5 , VSFTP_C_878R , VSFTP_CS_ISO5 , VSFTP_CS_878R },
-+ { VSFTP_C_ISO5 , VSFTP_C_878U , VSFTP_CS_ISO5 , VSFTP_CS_878U },
-+ { VSFTP_C_ISO5 , VSFTP_C_866 , VSFTP_CS_ISO5 , VSFTP_CS_866 },
-+#endif
-+ // Western European
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO1 , VSFTP_CS_UTF8WEST , VSFTP_CS_ISO1 },
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO15 , VSFTP_CS_UTF8WEST , VSFTP_CS_ISO15 },
-+ { VSFTP_C_UTF8 , VSFTP_C_1252 , VSFTP_CS_UTF8WEST , VSFTP_CS_1252 },
-+ { VSFTP_C_ISO1 , VSFTP_C_UTF8 , VSFTP_CS_ISO1 , VSFTP_CS_UTF8WEST },
-+ { VSFTP_C_ISO1 , VSFTP_C_ISO15 , VSFTP_CS_ISO1 , VSFTP_CS_ISO15 },
-+ { VSFTP_C_ISO1 , VSFTP_C_1252 , VSFTP_CS_ISO1 , VSFTP_CS_1252 },
-+ { VSFTP_C_ISO15 , VSFTP_C_UTF8 , VSFTP_CS_ISO15 , VSFTP_CS_UTF8WEST },
-+ { VSFTP_C_ISO15 , VSFTP_C_ISO1 , VSFTP_CS_ISO15 , VSFTP_CS_ISO1 },
-+ { VSFTP_C_ISO15 , VSFTP_C_1252 , VSFTP_CS_ISO15 , VSFTP_CS_1252 },
-+ { VSFTP_C_1252 , VSFTP_C_UTF8 , VSFTP_CS_1252 , VSFTP_CS_UTF8WEST },
-+ { VSFTP_C_1252 , VSFTP_C_ISO1 , VSFTP_CS_1252 , VSFTP_CS_ISO1 },
-+ { VSFTP_C_1252 , VSFTP_C_ISO15 , VSFTP_CS_1252 , VSFTP_CS_ISO15 },
-+#endif
-+ // Central European
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO2 , VSFTP_CS_UTF8CENT , VSFTP_CS_ISO2 },
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO16 , VSFTP_CS_UTF8CENT , VSFTP_CS_ISO16 },
-+ { VSFTP_C_UTF8 , VSFTP_C_1250 , VSFTP_CS_UTF8CENT , VSFTP_CS_1250 },
-+ { VSFTP_C_ISO2 , VSFTP_C_UTF8 , VSFTP_CS_ISO2 , VSFTP_CS_UTF8CENT },
-+ { VSFTP_C_ISO2 , VSFTP_C_ISO16 , VSFTP_CS_ISO2 , VSFTP_CS_ISO16 },
-+ { VSFTP_C_ISO2 , VSFTP_C_1250 , VSFTP_CS_ISO2 , VSFTP_CS_1250 },
-+ { VSFTP_C_ISO16 , VSFTP_C_UTF8 , VSFTP_CS_ISO16 , VSFTP_CS_UTF8CENT },
-+ { VSFTP_C_ISO16 , VSFTP_C_ISO2 , VSFTP_CS_ISO16 , VSFTP_CS_ISO2 },
-+ { VSFTP_C_ISO16 , VSFTP_C_1250 , VSFTP_CS_ISO16 , VSFTP_CS_1250 },
-+ { VSFTP_C_1250 , VSFTP_C_UTF8 , VSFTP_CS_1250 , VSFTP_CS_UTF8CENT },
-+ { VSFTP_C_1250 , VSFTP_C_ISO2 , VSFTP_CS_1250 , VSFTP_CS_ISO2 },
-+ { VSFTP_C_1250 , VSFTP_C_ISO16 , VSFTP_CS_1250 , VSFTP_CS_ISO16 },
-+#endif
-+ // Soutern European
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+ { VSFTP_C_UTF8 , VSFTP_C_ISO3 , VSFTP_CS_UTF8SOUT , VSFTP_CS_ISO3 },
-+ { VSFTP_C_ISO3 , VSFTP_C_UTF8 , VSFTP_CS_ISO3 , VSFTP_CS_UTF8SOUT },
-+#endif
-+
-+ { 0, 0, 0, 0 }
-+};
-+
-+map_ptr map_array[] =
-+{
-+ 0,
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+ codepage_utf8cyr_array, codepage_win1251_array, codepage_koi8r_array,
-+ codepage_ibm866_array, codepage_iso5_array, codepage_koi8u_array,
-+#else
-+ 0, 0, 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+ codepage_utf8west_array, codepage_iso1_array, codepage_iso15_array,
-+ codepage_win1252_array,
-+#else
-+ 0, 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+ codepage_utf8cent_array, codepage_iso2_array, codepage_iso16_array,
-+ codepage_win1250_array,
-+#else
-+ 0, 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+ codepage_utf8sout_array, codepage_iso3_array,
-+#else
-+ 0, 0,
-+#endif
-+
-+ 0
-+};
-+
-+/* Initial table for work with unprintable chars */
-+map_ptr init_array[] =
-+{
-+ 0,
-+ codepage_utf8_array,
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+ codepage_win1251_array, codepage_koi8r_array, codepage_ibm866_array,
-+ codepage_iso5_array, codepage_koi8u_array,
-+#else
-+ 0, 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+ codepage_iso1_array, codepage_iso15_array, codepage_win1252_array,
-+#else
-+ 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+ codepage_iso2_array, codepage_iso16_array, codepage_win1250_array,
-+#else
-+ 0, 0, 0,
-+#endif
-+
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+ codepage_iso3_array,
-+#else
-+ 0,
-+#endif
-+
-+ 0
-+};
-+
-+map_ptr localMap = 0, remoteMap = 0;
-+map_ptr localTbl = 0, remoteTbl = 0;
-+
-+void char_convertion(struct mystr* p_str, int direction, char unprintable);
-+void InitTables(map_ptr* map, map_ptr* table, int indexx);
-+static int char_len(unsigned int s);
-+static unsigned int bsearch_index(map_ptr map, unsigned int low, unsigned int high, unsigned int char_code);
-+
-+const char* vsf_charconv_charset_name(int code)
-+{
-+ int i = 0;
-+ while (available_charsets_array [i].p_charset_name && available_charsets_array [i].p_variable != code) i++;
-+ return available_charsets_array [i].p_charset_name;
-+}
-+
-+int vsf_charconv_codepage(const char* p_str)
-+{
-+ const struct available_charsets* charsets = available_charsets_array;
-+
-+ while (charsets->p_charset_name != 0)
-+ {
-+ if (!vsf_sysutil_strcmp(charsets->p_charset_name, p_str))
-+ {
-+ return charsets->p_variable;
-+ }
-+ charsets++;
-+ }
-+
-+ return 0;
-+}
-+
-+int vsf_charconv_avail_convertion(int localCode, int remoteCode)
-+{
-+ const struct available_convertions* aconv = available_convertions_array;
-+
-+ while (aconv->local != 0)
-+ {
-+ if (localCode == aconv->local && remoteCode == aconv->remote)
-+ {
-+ InitTables(&localMap, &localTbl, aconv->localCharset);
-+ InitTables(&remoteMap, &remoteTbl, aconv->remoteCharset);
-+ return 1;
-+ }
-+ aconv++;
-+ }
-+
-+ return 0;
-+}
-+
-+void vsf_charconv_init_local_codepage(int localCode)
-+{
-+ if (!localCode)
-+ {
-+ return;
-+ }
-+
-+ localTbl = init_array [localCode];
-+ localMap = vsf_sysutil_malloc((localTbl [0].order + 1) * sizeof(_codepage_map));
-+ localMap [0].char_code = localTbl [0].char_code;
-+ localMap [0].order = localTbl [0].order;
-+
-+ int indexx = 1;
-+ while (localTbl [indexx].char_code)
-+ {
-+ if (localTbl [indexx].order)
-+ {
-+ localMap [localTbl [indexx].order].char_code = localTbl [indexx].char_code;
-+ localMap [localTbl [indexx].order].order = indexx;
-+ }
-+ indexx++;
-+ }
-+
-+ return;
-+}
-+
-+void vsf_charconv_convert(struct vsf_session* p_sess, struct mystr* p_str, int direction)
-+{
-+ if (!p_sess->enable_conversion || !p_sess->remote_charset || !tunable_local_codepage) return;
-+
-+ char_convertion(p_str, direction, '?');
-+}
-+
-+void vsf_charconv_replace_unprintable(struct mystr* p_str, char new_char)
-+{
-+ if (localMap) char_convertion(p_str, VSFTP_CONVDIRECT_UNPRINTABLE, new_char);
-+}
-+
-+void InitTables(map_ptr* map, map_ptr* table, int indexx)
-+{
-+ *table = map_array [indexx];
-+
-+ if (*map) vsf_sysutil_free(*map);
-+
-+ *map = vsf_sysutil_malloc(((*table) [0].order + 1) * sizeof(_codepage_map));
-+ (*map) [0].char_code = (*table) [0].char_code;
-+ (*map) [0].order = (*table) [0].order;
-+
-+ indexx = 1;
-+ while ((*table) [indexx].char_code)
-+ {
-+ if ((*table) [indexx].order)
-+ {
-+ (*map) [(*table) [indexx].order].char_code = (*table) [indexx].char_code;
-+ (*map) [(*table) [indexx].order].order = indexx;
-+ }
-+ indexx++;
-+ }
-+
-+ return;
-+}
-+
-+static int char_len(unsigned int s)
-+{
-+ int len = 1;
-+ if ((s & 0x80) == 0x00) len = 1;
-+ else if ((s & 0xe0) == 0xc0) len = 2;
-+ else if ((s & 0xf0) == 0xe0) len = 3;
-+ else if ((s & 0xf8) == 0xf0) len = 4;
-+// else if ((s & 0xfc) == 0xf8) len = 5;
-+// else if ((s & 0xfe) == 0xce) len = 6;
-+ return (len);
-+}
-+
-+static unsigned int bsearch_index(map_ptr map, unsigned int low, unsigned int high, unsigned int char_code)
-+{
-+ unsigned int m, l = low, r = high;
-+
-+ m = (l + r) >> 1;
-+ while ((m != 0) && (map [m].char_code != char_code))
-+ {
-+ if (map [m].char_code < char_code) l = m + 1;
-+ else
-+ if (map [m].char_code > char_code) r = m - 1;
-+ if (l > r)
-+ return 0;
-+ else
-+ m = (l + r) >> 1;
-+ }
-+
-+ if (m) m = map [m].order;
-+ return m;
-+}
-+
-+void char_convertion(struct mystr* p_str, int direction, char unprintable)
-+{
-+ const char* srcbuf;
-+ unsigned int srclen;
-+ char* dstbuf;
-+ map_ptr src, dst;
-+ unsigned int sl;
-+ unsigned int srcpos = 0, dstpos = 0;
-+ unsigned int char_code = 0;
-+
-+ srclen = str_getlen(p_str); // Len of source string
-+ srcbuf = str_getbuf(p_str);
-+
-+ if (direction == VSFTP_CONVDIRECT_FORWARD)
-+ {
-+ src = localMap;
-+ dst = remoteTbl;
-+ }
-+ else
-+ if (direction == VSFTP_CONVDIRECT_BACKWARD)
-+ {
-+ src = remoteMap;
-+ dst = localTbl;
-+ }
-+ else
-+ {
-+ src = localMap;
-+ dst = localTbl;
-+ }
-+
-+ if (!src || !dst)
-+ {
-+ return;
-+ }
-+
-+ dstbuf = vsf_sysutil_malloc(srclen * dst [0].char_code + dst [0].char_code);
-+
-+ while (srcpos < srclen)
-+ {
-+ char_code = (unsigned char)srcbuf [srcpos++];
-+ if (src [0].char_code > 1)
-+ {
-+ sl = char_len (char_code);
-+ while (sl-- > 1)
-+ {
-+ char_code = (char_code << 8) | (unsigned char)srcbuf [srcpos++];
-+ }
-+ }
-+
-+ if (char_code > 127)
-+ {
-+ sl = bsearch_index (src, 1, src [0].order, char_code);
-+ char_code = 0;
-+ if (sl) char_code = dst [sl].char_code;
-+ }
-+
-+ if (char_code == 13 || char_code == 10)
-+ {
-+ char_code = 0;
-+ }
-+ else
-+ if (char_code < 32 && char_code != 9)
-+ {
-+ char_code = (unsigned int)unprintable;
-+ }
-+
-+ if (char_code > 0 || direction != VSFTP_CONVDIRECT_UNPRINTABLE)
-+ {
-+ if (char_code & 0xff000000) dstbuf [dstpos++] = (char)((char_code >> 24) & 0xff);
-+ if (char_code & 0x00ff0000) dstbuf [dstpos++] = (char)((char_code >> 16) & 0xff);
-+ if (char_code & 0x0000ff00) dstbuf [dstpos++] = (char)((char_code >> 8) & 0xff);
-+ if (char_code & 0x000000ff) dstbuf [dstpos++] = (char)((char_code ) & 0xff);
-+ }
-+ }
-+
-+ dstbuf [dstpos] = '\0';
-+
-+ str_empty(p_str);
-+ str_append_text(p_str, dstbuf);
-+
-+ vsf_sysutil_free(dstbuf);
-+}
-+
-diff -urN vsftpd-2.0.5.org/charconv.h vsftpd-2.0.5/charconv.h
---- vsftpd-2.0.5.org/charconv.h 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/charconv.h 2008-01-13 19:32:11.000000000 +0200
-@@ -0,0 +1,182 @@
-+#ifndef VSF_CHARCONV_H
-+#define VSF_CHARCONV_H
-+
-+struct mystr;
-+struct vsf_session;
-+
-+#define VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+#define VSFTP_CHARCONV_SUPPORT_WESTERN
-+#define VSFTP_CHARCONV_SUPPORT_CENTRAL
-+#define VSFTP_CHARCONV_SUPPORT_SOUTERN
-+
-+#define VSFTP_CONVDIRECT_FORWARD 1
-+#define VSFTP_CONVDIRECT_UNPRINTABLE 0
-+#define VSFTP_CONVDIRECT_BACKWARD -1
-+
-+/* Supported charset for convertion */
-+#define VSFTP_CP_NONE "NONE"
-+#define VSFTP_CP_UTF_8 "UTF-8"
-+#define VSFTP_CP_UTF8 "UTF8"
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+#define VSFTP_CP_WIN_1251 "Win-1251"
-+#define VSFTP_CP_WIN1251 "WIN1251"
-+#define VSFTP_CP_CP1251 "CP1251"
-+#define VSFTP_CP_1251 "1251"
-+#define VSFTP_CP_KOI8_R "Koi8-R"
-+#define VSFTP_CP_KOI8R "KOI8R"
-+#define VSFTP_CP_KOI8_U "Koi8-U"
-+#define VSFTP_CP_KOI8U "KOI8U"
-+#define VSFTP_CP_CP878 "CP878"
-+#define VSFTP_CP_878 "878"
-+#define VSFTP_CP_CP878R "CP878R"
-+#define VSFTP_CP_878R "878R"
-+#define VSFTP_CP_CP878U "CP878U"
-+#define VSFTP_CP_878U "878U"
-+#define VSFTP_CP_IBM866 "IBM866"
-+#define VSFTP_CP_CP866 "CP866"
-+#define VSFTP_CP_866 "866"
-+#define VSFTP_CP_ISO8859_5 "ISO-8859-5"
-+#define VSFTP_CP_ISO5 "ISO5"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+#define VSFTP_CP_ISO8859_1 "ISO-8859-1"
-+#define VSFTP_CP_ISO1 "ISO1"
-+#define VSFTP_CP_LATIN1 "LATIN1"
-+#define VSFTP_CP_ISO8859_15 "ISO-8859-15"
-+#define VSFTP_CP_ISO15 "ISO15"
-+#define VSFTP_CP_LATIN9 "LATIN9"
-+#define VSFTP_CP_WIN_1252 "Win-1252"
-+#define VSFTP_CP_WIN1252 "WIN1252"
-+#define VSFTP_CP_CP1252 "CP1252"
-+#define VSFTP_CP_1252 "1252"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+#define VSFTP_CP_ISO8859_2 "ISO-8859-2"
-+#define VSFTP_CP_ISO2 "ISO2"
-+#define VSFTP_CP_LATIN2 "LATIN2"
-+#define VSFTP_CP_ISO8859_16 "ISO-8859-16"
-+#define VSFTP_CP_ISO16 "ISO16"
-+#define VSFTP_CP_WIN_1250 "Win-1250"
-+#define VSFTP_CP_WIN1250 "WIN1250"
-+#define VSFTP_CP_CP1250 "CP1250"
-+#define VSFTP_CP_1250 "1250"
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+#define VSFTP_CP_ISO8859_3 "ISO-8859-3"
-+#define VSFTP_CP_ISO3 "ISO3"
-+#define VSFTP_CP_LATIN3 "LATIN3"
-+#endif
-+
-+#define VSFTP_C_NONE 0
-+#define VSFTP_C_UTF8 1
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+#define VSFTP_C_1251 2
-+#define VSFTP_C_878R 3
-+#define VSFTP_C_866 4
-+#define VSFTP_C_ISO5 5
-+#define VSFTP_C_878U 6
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+#define VSFTP_C_ISO1 7
-+#define VSFTP_C_ISO15 8
-+#define VSFTP_C_1252 9
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+#define VSFTP_C_ISO2 10
-+#define VSFTP_C_ISO16 11
-+#define VSFTP_C_1250 12
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+#define VSFTP_C_ISO3 13
-+#endif
-+
-+#define VSFTP_CS_NONE 0
-+#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
-+#define VSFTP_CS_UTF8CYR 1
-+#define VSFTP_CS_1251 2
-+#define VSFTP_CS_878R 3
-+#define VSFTP_CS_866 4
-+#define VSFTP_CS_ISO5 5
-+#define VSFTP_CS_878U 6
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
-+#define VSFTP_CS_UTF8WEST 7
-+#define VSFTP_CS_ISO1 8
-+#define VSFTP_CS_ISO15 9
-+#define VSFTP_CS_1252 10
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
-+#define VSFTP_CS_UTF8CENT 11
-+#define VSFTP_CS_ISO2 12
-+#define VSFTP_CS_ISO16 13
-+#define VSFTP_CS_1250 14
-+#endif
-+#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
-+#define VSFTP_CS_UTF8SOUT 15
-+#define VSFTP_CS_ISO3 16
-+#endif
-+
-+struct codepage_map
-+{
-+ unsigned int char_code; // The first element is count bytes of char.
-+ unsigned int order;
-+} _codepage_map;
-+
-+typedef struct codepage_map * map_ptr;
-+
-+extern map_ptr localMap;
-+
-+/* vsf_charconv_charset_name()
-+ * PURPOSE
-+ * Get charset name by code;
-+ * PARAMETERS
-+ * code - Internal charset code
-+ * RETURNS
-+ * Charset name
-+ */
-+const char* vsf_charconv_charset_name(int code);
-+
-+/* vsf_charconv_codepage()
-+ * PURPOSE
-+ * Get internal charset code
-+ * PARAMETERS
-+ * p_str - String value with code page
-+ * RETURNS
-+ * Internal charset code
-+ */
-+int vsf_charconv_codepage(const char* p_str);
-+
-+/* vsf_charconv_init_local_codepage(int localCode)
-+ * PURPOSE
-+ * Init local codepage for work with unprintable chars
-+ * PARAMETERS
-+ * localCode - source internal code page
-+ */
-+void vsf_charconv_init_local_codepage(int localCode);
-+
-+/* vsf_charconv_avail_convertion()
-+ * PURPOS
-+ * Checking for available convertion characters
-+ * PARAMETERS
-+ * localCode - source internal code page
-+ * remoteCode - destination internal code page
-+ * RETURNS
-+ * Available ot not converion
-+ */
-+int vsf_charconv_avail_convertion(int localCode, int remoteCode);
-+
-+/* vsf_charconv_convert()
-+ * PURPOSE
-+ * Converting string via charsets
-+ * PARAMETERS
-+ * p_sess - the current session object
-+ * p_str - string for convertin
-+ * direction - converting from host to remoute charsetr or otherwise
-+ */
-+void vsf_charconv_convert(struct vsf_session* p_sess, struct mystr* p_str, int direction);
-+
-+/* vsf_charconv_replace_unprintable
-+ */
-+void vsf_charconv_replace_unprintable(struct mystr* p_str, char new_char);
-+
-+#endif
-diff -urN vsftpd-2.0.5.org/char_maps/central.map vsftpd-2.0.5/char_maps/central.map
---- vsftpd-2.0.5.org/char_maps/central.map 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/char_maps/central.map 2008-01-13 20:09:59.000000000 +0200
-@@ -0,0 +1,738 @@
-+/*
-+ !!! WARNING !!!
-+ DON'T CHANGE ORDER OF CHARS
-+*/
-+
-+struct codepage_map codepage_utf8cent_array[] =
-+ {
-+ { 0x000003, 178 }, // max size , char count
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00c280, 1 },
-+ { 0x00c281, 2 },
-+ { 0x00c282, 3 },
-+ { 0x00c283, 4 },
-+ { 0x00c284, 5 },
-+ { 0x00c285, 6 },
-+ { 0x00c286, 7 },
-+ { 0x00c287, 8 },
-+ { 0x00c288, 9 },
-+ { 0x00c289, 10 },
-+ { 0x00c28a, 11 },
-+ { 0x00c28b, 12 },
-+ { 0x00c28c, 13 },
-+ { 0x00c28d, 14 },
-+ { 0x00c28e, 15 },
-+ { 0x00c28f, 16 },
-+ { 0x00c290, 17 },
-+ { 0x00c291, 18 },
-+ { 0x00c292, 19 },
-+ { 0x00c293, 20 },
-+ { 0x00c294, 21 },
-+ { 0x00c295, 22 },
-+ { 0x00c296, 23 },
-+ { 0x00c297, 24 },
-+ { 0x00c298, 25 },
-+ { 0x00c299, 26 },
-+ { 0x00c29a, 27 },
-+ { 0x00c29b, 28 },
-+ { 0x00c29c, 29 },
-+ { 0x00c29d, 30 },
-+ { 0x00c29e, 31 },
-+ { 0x00c29f, 32 },
-+ { 0x00c2a0, 33 },
-+ { 0x00c2a4, 34 },
-+ { 0x00c2a6, 35 },
-+ { 0x00c2a7, 36 },
-+ { 0x00c2a8, 37 },
-+ { 0x00c2a9, 38 },
-+ { 0x00c2ab, 39 },
-+ { 0x00c2ad, 40 },
-+ { 0x00c2ad, 41 },
-+ { 0x00c2ae, 42 },
-+ { 0x00c2b0, 43 },
-+ { 0x00c2b1, 44 },
-+ { 0x00c2b4, 45 },
-+ { 0x00c2b5, 46 },
-+ { 0x00c2b6, 47 },
-+ { 0x00c2b7, 48 },
-+ { 0x00c2b8, 49 },
-+ { 0x00c2bb, 50 },
-+ { 0x00c380, 51 },
-+ { 0x00c381, 52 },
-+ { 0x00c382, 53 },
-+ { 0x00c384, 54 },
-+ { 0x00c386, 55 },
-+ { 0x00c387, 56 },
-+ { 0x00c388, 57 },
-+ { 0x00c389, 58 },
-+ { 0x00c38a, 59 },
-+ { 0x00c38b, 60 },
-+ { 0x00c38c, 61 },
-+ { 0x00c38d, 62 },
-+ { 0x00c38e, 63 },
-+ { 0x00c38f, 64 },
-+ { 0x00c392, 65 },
-+ { 0x00c393, 66 },
-+ { 0x00c394, 67 },
-+ { 0x00c396, 68 },
-+ { 0x00c397, 69 },
-+ { 0x00c399, 70 },
-+ { 0x00c39a, 71 },
-+ { 0x00c39b, 72 },
-+ { 0x00c39c, 73 },
-+ { 0x00c39d, 74 },
-+ { 0x00c39f, 75 },
-+ { 0x00c3a0, 76 },
-+ { 0x00c3a1, 77 },
-+ { 0x00c3a2, 78 },
-+ { 0x00c3a4, 79 },
-+ { 0x00c3a6, 80 },
-+ { 0x00c3a7, 81 },
-+ { 0x00c3a8, 82 },
-+ { 0x00c3a9, 83 },
-+ { 0x00c3aa, 84 },
-+ { 0x00c3ab, 85 },
-+ { 0x00c3ac, 86 },
-+ { 0x00c3ad, 87 },
-+ { 0x00c3ae, 88 },
-+ { 0x00c3af, 89 },
-+ { 0x00c3b2, 90 },
-+ { 0x00c3b3, 91 },
-+ { 0x00c3b4, 92 },
-+ { 0x00c3b6, 93 },
-+ { 0x00c3b7, 94 },
-+ { 0x00c3b9, 95 },
-+ { 0x00c3ba, 96 },
-+ { 0x00c3bb, 97 },
-+ { 0x00c3bc, 98 },
-+ { 0x00c3bd, 99 },
-+ { 0x00c3bf, 100 },
-+ { 0x00c482, 101 },
-+ { 0x00c483, 102 },
-+ { 0x00c484, 103 },
-+ { 0x00c485, 104 },
-+ { 0x00c486, 105 },
-+ { 0x00c487, 106 },
-+ { 0x00c48c, 107 },
-+ { 0x00c48d, 108 },
-+ { 0x00c48e, 109 },
-+ { 0x00c48f, 110 },
-+ { 0x00c490, 111 },
-+ { 0x00c491, 112 },
-+ { 0x00c498, 113 },
-+ { 0x00c499, 114 },
-+ { 0x00c49a, 115 },
-+ { 0x00c49b, 116 },
-+ { 0x00c4b9, 117 },
-+ { 0x00c4ba, 118 },
-+ { 0x00c4bd, 119 },
-+ { 0x00c4be, 120 },
-+ { 0x00c581, 121 },
-+ { 0x00c582, 122 },
-+ { 0x00c583, 123 },
-+ { 0x00c584, 124 },
-+ { 0x00c587, 125 },
-+ { 0x00c588, 126 },
-+ { 0x00c590, 127 },
-+ { 0x00c591, 128 },
-+ { 0x00c592, 129 },
-+ { 0x00c593, 130 },
-+ { 0x00c594, 131 },
-+ { 0x00c595, 132 },
-+ { 0x00c598, 133 },
-+ { 0x00c599, 134 },
-+ { 0x00c59a, 135 },
-+ { 0x00c59b, 136 },
-+ { 0x00c59e, 137 },
-+ { 0x00c59f, 138 },
-+ { 0x00c5a0, 139 },
-+ { 0x00c5a1, 140 },
-+ { 0x00c5a2, 141 },
-+ { 0x00c5a3, 142 },
-+ { 0x00c5a4, 143 },
-+ { 0x00c5a5, 144 },
-+ { 0x00c5ae, 145 },
-+ { 0x00c5af, 146 },
-+ { 0x00c5b0, 147 },
-+ { 0x00c5b1, 148 },
-+ { 0x00c5b8, 149 },
-+ { 0x00c5b9, 150 },
-+ { 0x00c5ba, 151 },
-+ { 0x00c5bb, 152 },
-+ { 0x00c5bc, 153 },
-+ { 0x00c5bd, 154 },
-+ { 0x00c5be, 155 },
-+ { 0x00cb87, 156 },
-+ { 0x00cb98, 157 },
-+ { 0x00cb99, 158 },
-+ { 0x00c89a, 159 },
-+ { 0x00cb9b, 160 },
-+ { 0x00cb9d, 161 },
-+ { 0xe28093, 162 },
-+ { 0xe28094, 163 },
-+ { 0xe28098, 164 },
-+ { 0xe28099, 165 },
-+ { 0xe2809a, 166 },
-+ { 0xe2809c, 167 },
-+ { 0xe2809d, 168 },
-+ { 0xe2809e, 169 },
-+ { 0xe280a0, 170 },
-+ { 0xe280a1, 171 },
-+ { 0xe280a2, 172 },
-+ { 0xe280a6, 173 },
-+ { 0xe280b0, 174 },
-+ { 0xe280b9, 175 },
-+ { 0xe280ba, 176 },
-+ { 0xe282ac, 177 },
-+ { 0xe284a2, 178 },
-+ { 0x000000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso2_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b3, 52 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x0000, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso16_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a7, 40 },
-+ { 0x003f, 0 },
-+ { 0x00a9, 42 },
-+ { 0x00ab, 44 },
-+ { 0x00ad, 46 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x003f, 0 },
-+ { 0x00bb, 60 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c4, 69 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d6, 87 },
-+ { 0x003f, 0 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x003f, 0 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e4, 101 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f6, 119 },
-+ { 0x003f, 0 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x003f, 0 },
-+ { 0x00ff, 128 },
-+ { 0x00c3, 68 },
-+ { 0x00e3, 100 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00c5, 70 },
-+ { 0x00e5, 102 },
-+ { 0x00b2, 51 },
-+ { 0x00b9, 58 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00d0, 81 },
-+ { 0x00f0, 113 },
-+ { 0x00dd, 94 },
-+ { 0x00fd, 126 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a3, 36 },
-+ { 0x00b3, 52 },
-+ { 0x00d1, 82 },
-+ { 0x00f1, 114 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00d5, 86 },
-+ { 0x00f5, 118 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00d7, 88 },
-+ { 0x00f7, 120 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a6, 39 },
-+ { 0x00a8, 41 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00d8, 89 },
-+ { 0x00f8, 121 },
-+ { 0x00be, 63 },
-+ { 0x00ac, 45 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00bf, 64 },
-+ { 0x00b4, 53 },
-+ { 0x00b8, 57 },
-+ { 0x003f, 0 },
-+ { 0x00aa, 43 },
-+ { 0x00ba, 59 },
-+ { 0x00de, 95 },
-+ { 0x00fe, 127 },
-+ { 0x00b5, 54 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a5, 38 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a4, 37 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_win1250_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x0081, 2 },
-+ { 0x0083, 4 },
-+ { 0x0088, 9 },
-+ { 0x0090, 17 },
-+ { 0x0098, 25 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a0, 33 },
-+ { 0x00a4, 37 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00bb, 60 },
-+ { 0x003f, 0 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c4, 69 },
-+ { 0x003f, 0 },
-+ { 0x00c7, 72 },
-+ { 0x003f, 0 },
-+ { 0x00c9, 74 },
-+ { 0x003f, 0 },
-+ { 0x00cb, 76 },
-+ { 0x003f, 0 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x003f, 0 },
-+ { 0x00da, 91 },
-+ { 0x003f, 0 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00df, 96 },
-+ { 0x003f, 0 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e4, 101 },
-+ { 0x003f, 0 },
-+ { 0x00e7, 104 },
-+ { 0x003f, 0 },
-+ { 0x00e9, 106 },
-+ { 0x003f, 0 },
-+ { 0x00eb, 108 },
-+ { 0x003f, 0 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x003f, 0 },
-+ { 0x00fa, 123 },
-+ { 0x003f, 0 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x003f, 0 },
-+ { 0x00c3, 68 },
-+ { 0x00e3, 100 },
-+ { 0x00a5, 38 },
-+ { 0x00b9, 58 },
-+ { 0x00c6, 71 },
-+ { 0x00e6, 103 },
-+ { 0x00c8, 73 },
-+ { 0x00e8, 105 },
-+ { 0x00cf, 80 },
-+ { 0x00ef, 112 },
-+ { 0x00d0, 81 },
-+ { 0x00f0, 113 },
-+ { 0x00ca, 75 },
-+ { 0x00ea, 107 },
-+ { 0x00cc, 77 },
-+ { 0x00ec, 109 },
-+ { 0x00c5, 70 },
-+ { 0x00e5, 102 },
-+ { 0x00bc, 61 },
-+ { 0x00be, 63 },
-+ { 0x00a3, 36 },
-+ { 0x00b3, 52 },
-+ { 0x00d1, 82 },
-+ { 0x00f1, 114 },
-+ { 0x00d2, 83 },
-+ { 0x00f2, 115 },
-+ { 0x00d5, 86 },
-+ { 0x00f5, 118 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00c0, 65 },
-+ { 0x00e0, 97 },
-+ { 0x00d8, 89 },
-+ { 0x00f8, 121 },
-+ { 0x008c, 13 },
-+ { 0x009c, 29 },
-+ { 0x00aa, 43 },
-+ { 0x00ba, 59 },
-+ { 0x008a, 11 },
-+ { 0x009a, 27 },
-+ { 0x00de, 95 },
-+ { 0x00fe, 127 },
-+ { 0x008d, 14 },
-+ { 0x009d, 30 },
-+ { 0x00d9, 90 },
-+ { 0x00f9, 122 },
-+ { 0x00db, 92 },
-+ { 0x00fb, 124 },
-+ { 0x003f, 0 },
-+ { 0x008f, 16 },
-+ { 0x009f, 32 },
-+ { 0x00af, 48 },
-+ { 0x00bf, 64 },
-+ { 0x008e, 15 },
-+ { 0x009e, 31 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00ff, 128 },
-+ { 0x003f, 0 },
-+ { 0x00b2, 51 },
-+ { 0x00bd, 62 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0082, 3 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0084, 5 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0095, 22 },
-+ { 0x0085, 6 },
-+ { 0x0089, 10 },
-+ { 0x008b, 12 },
-+ { 0x009b, 28 },
-+ { 0x0080, 1 },
-+ { 0x0099, 26 },
-+ { 0x0000, 0 }
-+ };
-+
-diff -urN vsftpd-2.0.5.org/char_maps/cyrillic.map vsftpd-2.0.5/char_maps/cyrillic.map
---- vsftpd-2.0.5.org/char_maps/cyrillic.map 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/char_maps/cyrillic.map 2008-01-13 20:09:59.000000000 +0200
-@@ -0,0 +1,1349 @@
-+/*
-+ !!! WARNING !!!
-+ DON'T CHANGE ORDER OF CHARS
-+*/
-+
-+struct codepage_map codepage_utf8cyr_array[] =
-+ {
-+ { 0x000003, 216 }, // max size , char count
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00c280, 1 },
-+ { 0x00c281, 2 },
-+ { 0x00c282, 3 },
-+ { 0x00c283, 4 },
-+ { 0x00c284, 5 },
-+ { 0x00c285, 6 },
-+ { 0x00c286, 7 },
-+ { 0x00c287, 8 },
-+ { 0x00c288, 9 },
-+ { 0x00c289, 10 },
-+ { 0x00c28a, 11 },
-+ { 0x00c28b, 12 },
-+ { 0x00c28c, 13 },
-+ { 0x00c28d, 14 },
-+ { 0x00c28e, 15 },
-+ { 0x00c28f, 16 },
-+ { 0x00c290, 17 },
-+ { 0x00c291, 18 },
-+ { 0x00c292, 19 },
-+ { 0x00c293, 20 },
-+ { 0x00c294, 21 },
-+ { 0x00c295, 22 },
-+ { 0x00c296, 23 },
-+ { 0x00c297, 24 },
-+ { 0x00c298, 25 },
-+ { 0x00c299, 26 },
-+ { 0x00c29a, 27 },
-+ { 0x00c29b, 28 },
-+ { 0x00c29c, 29 },
-+ { 0x00c29d, 30 },
-+ { 0x00c29e, 31 },
-+ { 0x00c29f, 32 },
-+ { 0x00c2a0, 33 },
-+ { 0x00c2a4, 34 },
-+ { 0x00c2a6, 35 },
-+ { 0x00c2a7, 36 },
-+ { 0x00c2a9, 37 },
-+ { 0x00c2ab, 38 },
-+ { 0x00c2ac, 39 },
-+ { 0x00c2ad, 40 },
-+ { 0x00c2ae, 41 },
-+ { 0x00c2b0, 42 },
-+ { 0x00c2b1, 43 },
-+ { 0x00c2b2, 44 },
-+ { 0x00c2b5, 45 },
-+ { 0x00c2b6, 46 },
-+ { 0x00c2b7, 47 },
-+ { 0x00c2bb, 48 },
-+ { 0x00c3b7, 49 },
-+ { 0x00d081, 50 },
-+ { 0x00d082, 51 },
-+ { 0x00d083, 52 },
-+ { 0x00d084, 53 },
-+ { 0x00d085, 54 },
-+ { 0x00d086, 55 },
-+ { 0x00d087, 56 },
-+ { 0x00d088, 57 },
-+ { 0x00d089, 58 },
-+ { 0x00d08a, 59 },
-+ { 0x00d08b, 60 },
-+ { 0x00d08c, 61 },
-+ { 0x00d08e, 62 },
-+ { 0x00d08f, 63 },
-+ { 0x00d090, 64 },
-+ { 0x00d091, 65 },
-+ { 0x00d092, 66 },
-+ { 0x00d093, 67 },
-+ { 0x00d094, 68 },
-+ { 0x00d095, 69 },
-+ { 0x00d096, 70 },
-+ { 0x00d097, 71 },
-+ { 0x00d098, 72 },
-+ { 0x00d099, 73 },
-+ { 0x00d09a, 74 },
-+ { 0x00d09b, 75 },
-+ { 0x00d09c, 76 },
-+ { 0x00d09d, 77 },
-+ { 0x00d09e, 78 },
-+ { 0x00d09f, 79 },
-+ { 0x00d0a0, 80 },
-+ { 0x00d0a1, 81 },
-+ { 0x00d0a2, 82 },
-+ { 0x00d0a3, 83 },
-+ { 0x00d0a4, 84 },
-+ { 0x00d0a5, 85 },
-+ { 0x00d0a6, 86 },
-+ { 0x00d0a7, 87 },
-+ { 0x00d0a8, 88 },
-+ { 0x00d0a9, 89 },
-+ { 0x00d0aa, 90 },
-+ { 0x00d0ab, 91 },
-+ { 0x00d0ac, 92 },
-+ { 0x00d0ad, 93 },
-+ { 0x00d0ae, 94 },
-+ { 0x00d0af, 95 },
-+ { 0x00d0b0, 96 },
-+ { 0x00d0b1, 97 },
-+ { 0x00d0b2, 98 },
-+ { 0x00d0b3, 99 },
-+ { 0x00d0b4, 100 },
-+ { 0x00d0b5, 101 },
-+ { 0x00d0b6, 102 },
-+ { 0x00d0b7, 103 },
-+ { 0x00d0b8, 104 },
-+ { 0x00d0b9, 105 },
-+ { 0x00d0ba, 106 },
-+ { 0x00d0bb, 107 },
-+ { 0x00d0bc, 108 },
-+ { 0x00d0bd, 109 },
-+ { 0x00d0be, 110 },
-+ { 0x00d0bf, 111 },
-+ { 0x00d180, 112 },
-+ { 0x00d181, 113 },
-+ { 0x00d182, 114 },
-+ { 0x00d183, 115 },
-+ { 0x00d184, 116 },
-+ { 0x00d185, 117 },
-+ { 0x00d186, 118 },
-+ { 0x00d187, 119 },
-+ { 0x00d188, 120 },
-+ { 0x00d189, 121 },
-+ { 0x00d18a, 122 },
-+ { 0x00d18b, 123 },
-+ { 0x00d18c, 124 },
-+ { 0x00d18d, 125 },
-+ { 0x00d18e, 126 },
-+ { 0x00d18f, 127 },
-+ { 0x00d191, 128 },
-+ { 0x00d192, 129 },
-+ { 0x00d193, 130 },
-+ { 0x00d194, 131 },
-+ { 0x00d195, 132 },
-+ { 0x00d196, 133 },
-+ { 0x00d197, 134 },
-+ { 0x00d198, 135 },
-+ { 0x00d199, 136 },
-+ { 0x00d19a, 137 },
-+ { 0x00d19b, 138 },
-+ { 0x00d19c, 139 },
-+ { 0x00d19e, 140 },
-+ { 0x00d19f, 141 },
-+ { 0x00d290, 142 },
-+ { 0x00d291, 143 },
-+ { 0xe28093, 144 },
-+ { 0xe28094, 145 },
-+ { 0xe28098, 146 },
-+ { 0xe28099, 147 },
-+ { 0xe2809a, 148 },
-+ { 0xe2809c, 149 },
-+ { 0xe2809d, 150 },
-+ { 0xe2809e, 151 },
-+ { 0xe280a0, 152 },
-+ { 0xe280a1, 153 },
-+ { 0xe280a2, 154 },
-+ { 0xe280a6, 155 },
-+ { 0xe280b0, 156 },
-+ { 0xe280b9, 157 },
-+ { 0xe280ba, 158 },
-+ { 0xe28496, 159 },
-+ { 0xe284a2, 160 },
-+ { 0xe28899, 161 },
-+ { 0xe2889a, 162 },
-+ { 0xe28988, 163 },
-+ { 0xe289a4, 164 },
-+ { 0xe289a5, 165 },
-+ { 0xe28ca0, 166 },
-+ { 0xe28ca1, 167 },
-+ { 0xe29480, 168 },
-+ { 0xe29482, 169 },
-+ { 0xe2948c, 170 },
-+ { 0xe29490, 171 },
-+ { 0xe29494, 172 },
-+ { 0xe29498, 173 },
-+ { 0xe2949c, 174 },
-+ { 0xe294a4, 175 },
-+ { 0xe294ac, 176 },
-+ { 0xe294b4, 177 },
-+ { 0xe294bc, 178 },
-+ { 0xe29590, 179 },
-+ { 0xe29591, 180 },
-+ { 0xe29592, 181 },
-+ { 0xe29593, 182 },
-+ { 0xe29594, 183 },
-+ { 0xe29595, 184 },
-+ { 0xe29596, 185 },
-+ { 0xe29597, 186 },
-+ { 0xe29598, 187 },
-+ { 0xe29599, 188 },
-+ { 0xe2959a, 189 },
-+ { 0xe2959b, 190 },
-+ { 0xe2959c, 191 },
-+ { 0xe2959d, 192 },
-+ { 0xe2959e, 193 },
-+ { 0xe2959f, 194 },
-+ { 0xe295a0, 195 },
-+ { 0xe295a1, 196 },
-+ { 0xe295a2, 197 },
-+ { 0xe295a3, 198 },
-+ { 0xe295a4, 199 },
-+ { 0xe295a5, 200 },
-+ { 0xe295a6, 201 },
-+ { 0xe295a7, 202 },
-+ { 0xe295a8, 203 },
-+ { 0xe295a9, 204 },
-+ { 0xe295aa, 205 },
-+ { 0xe295ab, 206 },
-+ { 0xe295ac, 207 },
-+ { 0xe29680, 208 },
-+ { 0xe29684, 209 },
-+ { 0xe29688, 210 },
-+ { 0xe2968c, 211 },
-+ { 0xe29690, 212 },
-+ { 0xe29691, 213 },
-+ { 0xe29692, 214 },
-+ { 0xe29693, 215 },
-+ { 0xe296a0, 216 },
-+ { 0x000000, 0 }
-+ };
-+
-+struct codepage_map codepage_win1251_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x0088, 9 },
-+ { 0x0098, 25 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a0, 33 },
-+ { 0x00a4, 37 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a9, 42 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x003f, 0 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00bb, 60 },
-+ { 0x003f, 0 },
-+ { 0x00a8, 41 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x00aa, 43 },
-+ { 0x00bd, 62 },
-+ { 0x00b2, 51 },
-+ { 0x00af, 48 },
-+ { 0x00a3, 36 },
-+ { 0x008a, 11 },
-+ { 0x008c, 13 },
-+ { 0x008e, 15 },
-+ { 0x008d, 14 },
-+ { 0x00a1, 34 },
-+ { 0x008f, 16 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x00b8, 57 },
-+ { 0x0090, 17 },
-+ { 0x0083, 4 },
-+ { 0x00ba, 59 },
-+ { 0x00be, 63 },
-+ { 0x00b3, 52 },
-+ { 0x00bf, 64 },
-+ { 0x00bc, 61 },
-+ { 0x009a, 27 },
-+ { 0x009c, 29 },
-+ { 0x009e, 31 },
-+ { 0x009d, 30 },
-+ { 0x00a2, 35 },
-+ { 0x009f, 32 },
-+ { 0x00a5, 38 },
-+ { 0x00b4, 53 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0082, 3 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0084, 5 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0095, 22 },
-+ { 0x0085, 6 },
-+ { 0x0089, 10 },
-+ { 0x008b, 12 },
-+ { 0x009b, 28 },
-+ { 0x00b9, 58 },
-+ { 0x0099, 26 },
-+ { 0x0000, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_koi8u_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x009a, 27 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00bf, 64 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x009c, 29 },
-+ { 0x003f, 0 },
-+ { 0x009d, 30 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x009e, 31 },
-+ { 0x003f, 0 },
-+ { 0x009f, 32 },
-+ { 0x00b3, 52 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00b4, 53 },
-+ { 0x003f, 0 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00f7, 120 },
-+ { 0x00e7, 104 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00f6, 119 },
-+ { 0x00fa, 123 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00e6, 103 },
-+ { 0x00e8, 105 },
-+ { 0x00e3, 100 },
-+ { 0x00fe, 127 },
-+ { 0x00fb, 124 },
-+ { 0x00fd, 126 },
-+ { 0x00ff, 128 },
-+ { 0x00f9, 122 },
-+ { 0x00f8, 121 },
-+ { 0x00fc, 125 },
-+ { 0x00e0, 97 },
-+ { 0x00f1, 114 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00d7, 88 },
-+ { 0x00c7, 72 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00d6, 87 },
-+ { 0x00da, 91 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00c6, 71 },
-+ { 0x00c8, 73 },
-+ { 0x00c3, 68 },
-+ { 0x00de, 95 },
-+ { 0x00db, 92 },
-+ { 0x00dd, 94 },
-+ { 0x00df, 96 },
-+ { 0x00d9, 90 },
-+ { 0x00d8, 89 },
-+ { 0x00dc, 93 },
-+ { 0x00c0, 65 },
-+ { 0x00d1, 82 },
-+ { 0x00a3, 36 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a4, 37 },
-+ { 0x003f, 0 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00bd, 62 },
-+ { 0x00ad, 46 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x0093, 20 },
-+ { 0x009b, 28 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x003f, 0 },
-+ { 0x00a5, 38 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x003f, 0 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x003f, 0 },
-+ { 0x00b5, 54 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x003f, 0 },
-+ { 0x00be, 63 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0094, 21 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_ibm866_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00ff, 128 },
-+ { 0x00fd, 126 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f8, 121 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00fa, 123 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f0, 113 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f2, 115 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f4, 117 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f6, 119 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f1, 114 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f3, 116 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f5, 118 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f7, 120 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00fc, 125 },
-+ { 0x003f, 0 },
-+ { 0x00f9, 122 },
-+ { 0x00fb, 124 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00c4, 69 },
-+ { 0x00b3, 52 },
-+ { 0x00da, 91 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00d9, 90 },
-+ { 0x00c3, 68 },
-+ { 0x00b4, 53 },
-+ { 0x00c2, 67 },
-+ { 0x00c1, 66 },
-+ { 0x00c5, 70 },
-+ { 0x00cd, 78 },
-+ { 0x00ba, 59 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00c9, 74 },
-+ { 0x00b8, 57 },
-+ { 0x00b7, 56 },
-+ { 0x00bb, 60 },
-+ { 0x00d4, 85 },
-+ { 0x00d3, 84 },
-+ { 0x00c8, 73 },
-+ { 0x00be, 63 },
-+ { 0x00bd, 62 },
-+ { 0x00bc, 61 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00cc, 77 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b9, 58 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00cb, 76 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00ca, 75 },
-+ { 0x00d8, 89 },
-+ { 0x00d7, 88 },
-+ { 0x00ce, 79 },
-+ { 0x00df, 96 },
-+ { 0x00dc, 93 },
-+ { 0x00db, 92 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00fe, 127 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso5_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00fd, 126 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00ad, 46 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b3, 52 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00f0, 113 },
-+ { 0x0000, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_koi8r_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x009a, 27 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x00bf, 64 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x009c, 29 },
-+ { 0x005f, 0 },
-+ { 0x009d, 30 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x009e, 31 },
-+ { 0x005f, 0 },
-+ { 0x009f, 32 },
-+ { 0x00b3, 52 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00f7, 120 },
-+ { 0x00e7, 104 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00f6, 119 },
-+ { 0x00fa, 123 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00e6, 103 },
-+ { 0x00e8, 105 },
-+ { 0x00e3, 100 },
-+ { 0x00fe, 127 },
-+ { 0x00fb, 124 },
-+ { 0x00fd, 126 },
-+ { 0x00ff, 128 },
-+ { 0x00f9, 122 },
-+ { 0x00f8, 121 },
-+ { 0x00fc, 125 },
-+ { 0x00e0, 97 },
-+ { 0x00f1, 114 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00d7, 88 },
-+ { 0x00c7, 72 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00d6, 87 },
-+ { 0x00da, 91 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00c6, 71 },
-+ { 0x00c8, 73 },
-+ { 0x00c3, 68 },
-+ { 0x00de, 95 },
-+ { 0x00db, 92 },
-+ { 0x00dd, 94 },
-+ { 0x00df, 96 },
-+ { 0x00d9, 90 },
-+ { 0x00d8, 89 },
-+ { 0x00dc, 93 },
-+ { 0x00c0, 65 },
-+ { 0x00d1, 82 },
-+ { 0x00a3, 36 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x005f, 0 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x0093, 20 },
-+ { 0x009b, 28 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0094, 21 },
-+ { 0x0000, 0 }
-+ };
-+
-diff -urN vsftpd-2.0.5.org/char_maps/soutern.map vsftpd-2.0.5/char_maps/soutern.map
---- vsftpd-2.0.5.org/char_maps/soutern.map 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/char_maps/soutern.map 2008-01-13 20:09:59.000000000 +0200
-@@ -0,0 +1,259 @@
-+/*
-+ !!! WARNING !!!
-+ DON'T CHANGE ORDER OF CHARS
-+*/
-+
-+struct codepage_map codepage_utf8sout_array[] =
-+ {
-+ { 0x000003, 121 }, // max size , char count
-+ { 0x00c280, 1 },
-+ { 0x00c281, 2 },
-+ { 0x00c282, 3 },
-+ { 0x00c283, 4 },
-+ { 0x00c284, 5 },
-+ { 0x00c285, 6 },
-+ { 0x00c286, 7 },
-+ { 0x00c287, 8 },
-+ { 0x00c288, 9 },
-+ { 0x00c289, 10 },
-+ { 0x00c28a, 11 },
-+ { 0x00c28b, 12 },
-+ { 0x00c28c, 13 },
-+ { 0x00c28d, 14 },
-+ { 0x00c28e, 15 },
-+ { 0x00c28f, 16 },
-+ { 0x00c290, 17 },
-+ { 0x00c291, 18 },
-+ { 0x00c292, 19 },
-+ { 0x00c293, 20 },
-+ { 0x00c294, 21 },
-+ { 0x00c295, 22 },
-+ { 0x00c296, 23 },
-+ { 0x00c297, 24 },
-+ { 0x00c298, 25 },
-+ { 0x00c299, 26 },
-+ { 0x00c29a, 27 },
-+ { 0x00c29b, 28 },
-+ { 0x00c29c, 29 },
-+ { 0x00c29d, 30 },
-+ { 0x00c29e, 31 },
-+ { 0x00c29f, 32 },
-+ { 0x00c2a0, 33 },
-+ { 0x00c2a3, 34 },
-+ { 0x00c2a4, 35 },
-+ { 0x00c2a7, 36 },
-+ { 0x00c2a8, 37 },
-+ { 0x00c2ad, 38 },
-+ { 0x00c2b0, 39 },
-+ { 0x00c2b2, 40 },
-+ { 0x00c2b3, 41 },
-+ { 0x00c2b4, 42 },
-+ { 0x00c2b5, 43 },
-+ { 0x00c2b7, 44 },
-+ { 0x00c2b8, 45 },
-+ { 0x00c2bd, 46 },
-+ { 0x00c380, 47 },
-+ { 0x00c381, 48 },
-+ { 0x00c382, 49 },
-+ { 0x00c384, 50 },
-+ { 0x00c387, 51 },
-+ { 0x00c388, 52 },
-+ { 0x00c389, 53 },
-+ { 0x00c38a, 54 },
-+ { 0x00c38b, 55 },
-+ { 0x00c38c, 56 },
-+ { 0x00c38d, 57 },
-+ { 0x00c38e, 58 },
-+ { 0x00c38f, 59 },
-+ { 0x00c391, 60 },
-+ { 0x00c392, 61 },
-+ { 0x00c393, 62 },
-+ { 0x00c394, 63 },
-+ { 0x00c396, 64 },
-+ { 0x00c397, 65 },
-+ { 0x00c399, 66 },
-+ { 0x00c39a, 67 },
-+ { 0x00c39b, 68 },
-+ { 0x00c39c, 69 },
-+ { 0x00c39f, 70 },
-+ { 0x00c3a0, 71 },
-+ { 0x00c3a1, 72 },
-+ { 0x00c3a2, 73 },
-+ { 0x00c3a4, 74 },
-+ { 0x00c3a7, 75 },
-+ { 0x00c3a8, 76 },
-+ { 0x00c3a9, 77 },
-+ { 0x00c3aa, 78 },
-+ { 0x00c3ab, 79 },
-+ { 0x00c3ac, 80 },
-+ { 0x00c3ad, 81 },
-+ { 0x00c3ae, 82 },
-+ { 0x00c3af, 83 },
-+ { 0x00c3b1, 84 },
-+ { 0x00c3b2, 85 },
-+ { 0x00c3b3, 86 },
-+ { 0x00c3b4, 87 },
-+ { 0x00c3b6, 88 },
-+ { 0x00c3b7, 89 },
-+ { 0x00c3b9, 90 },
-+ { 0x00c3ba, 91 },
-+ { 0x00c3bb, 92 },
-+ { 0x00c3bc, 93 },
-+ { 0x00c488, 94 },
-+ { 0x00c489, 95 },
-+ { 0x00c48a, 96 },
-+ { 0x00c48b, 97 },
-+ { 0x00c49c, 98 },
-+ { 0x00c49d, 99 },
-+ { 0x00c49e, 100 },
-+ { 0x00c49f, 101 },
-+ { 0x00c4a0, 102 },
-+ { 0x00c4a1, 103 },
-+ { 0x00c4a4, 104 },
-+ { 0x00c4a5, 105 },
-+ { 0x00c4a6, 106 },
-+ { 0x00c4a7, 107 },
-+ { 0x00c4b0, 108 },
-+ { 0x00c4b1, 109 },
-+ { 0x00c4b4, 110 },
-+ { 0x00c4b5, 111 },
-+ { 0x00c59c, 112 },
-+ { 0x00c59d, 113 },
-+ { 0x00c59e, 114 },
-+ { 0x00c59f, 115 },
-+ { 0x00c5ac, 116 },
-+ { 0x00c5ad, 117 },
-+ { 0x00c5bb, 118 },
-+ { 0x00c5bc, 119 },
-+ { 0x00cb98, 120 },
-+ { 0x00cb99, 121 },
-+ { 0x000000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso3_array[] =
-+ {
-+ { 0x0001, 121 }, // max size , char count for control
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a7, 39 },
-+ { 0x00a8, 40 },
-+ { 0x00ad, 45 },
-+ { 0x00b0, 47 },
-+ { 0x00b2, 49 },
-+ { 0x00b3, 50 },
-+ { 0x00b4, 51 },
-+ { 0x00b5, 52 },
-+ { 0x00b7, 54 },
-+ { 0x00b8, 55 },
-+ { 0x00bd, 60 },
-+ { 0x00c0, 62 },
-+ { 0x00c1, 63 },
-+ { 0x00c2, 64 },
-+ { 0x00c4, 65 },
-+ { 0x00c7, 68 },
-+ { 0x00c8, 69 },
-+ { 0x00c9, 70 },
-+ { 0x00ca, 71 },
-+ { 0x00cb, 72 },
-+ { 0x00cc, 73 },
-+ { 0x00cd, 74 },
-+ { 0x00ce, 75 },
-+ { 0x00cf, 76 },
-+ { 0x00d1, 77 },
-+ { 0x00d2, 78 },
-+ { 0x00d3, 79 },
-+ { 0x00d4, 80 },
-+ { 0x00d6, 82 },
-+ { 0x00d7, 83 },
-+ { 0x00d9, 85 },
-+ { 0x00da, 86 },
-+ { 0x00db, 87 },
-+ { 0x00dc, 88 },
-+ { 0x00df, 91 },
-+ { 0x00e0, 92 },
-+ { 0x00e1, 93 },
-+ { 0x00e2, 94 },
-+ { 0x00e4, 95 },
-+ { 0x00e7, 98 },
-+ { 0x00e8, 99 },
-+ { 0x00e9, 100 },
-+ { 0x00ea, 101 },
-+ { 0x00eb, 102 },
-+ { 0x00ec, 103 },
-+ { 0x00ed, 104 },
-+ { 0x00ee, 105 },
-+ { 0x00ef, 106 },
-+ { 0x00f1, 107 },
-+ { 0x00f2, 108 },
-+ { 0x00f3, 109 },
-+ { 0x00f4, 110 },
-+ { 0x00f6, 112 },
-+ { 0x00f7, 113 },
-+ { 0x00f9, 115 },
-+ { 0x00fa, 116 },
-+ { 0x00fb, 117 },
-+ { 0x00fc, 118 },
-+ { 0x00c6, 67 },
-+ { 0x00e6, 97 },
-+ { 0x00c5, 66 },
-+ { 0x00e5, 96 },
-+ { 0x00d8, 84 },
-+ { 0x00f8, 114 },
-+ { 0x00ab, 43 },
-+ { 0x00bb, 58 },
-+ { 0x00d5, 81 },
-+ { 0x00f5, 111 },
-+ { 0x00a6, 38 },
-+ { 0x00b6, 53 },
-+ { 0x00a1, 34 },
-+ { 0x00b1, 48 },
-+ { 0x00a9, 41 },
-+ { 0x00b9, 56 },
-+ { 0x00ac, 44 },
-+ { 0x00bc, 59 },
-+ { 0x00de, 90 },
-+ { 0x00fe, 120 },
-+ { 0x00aa, 42 },
-+ { 0x00ba, 57 },
-+ { 0x00dd, 89 },
-+ { 0x00fd, 119 },
-+ { 0x00af, 46 },
-+ { 0x00bf, 61 },
-+ { 0x00a2, 35 },
-+ { 0x00ff, 121 },
-+ { 0x0000, 0 }
-+ };
-+
-diff -urN vsftpd-2.0.5.org/char_maps/utf8.map vsftpd-2.0.5/char_maps/utf8.map
---- vsftpd-2.0.5.org/char_maps/utf8.map 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/char_maps/utf8.map 2008-01-13 20:09:59.000000000 +0200
-@@ -0,0 +1,393 @@
-+/*
-+ !!! WARNING !!!
-+ DON'T CHANGE ORDER OF CHARS
-+*/
-+
-+struct codepage_map codepage_utf8_array[] =
-+ {
-+ { 0x000003, 382 }, // max size , char count
-+ { 0x00c280, 1 },
-+ { 0x00c281, 2 },
-+ { 0x00c282, 3 },
-+ { 0x00c283, 4 },
-+ { 0x00c284, 5 },
-+ { 0x00c285, 6 },
-+ { 0x00c286, 7 },
-+ { 0x00c287, 8 },
-+ { 0x00c288, 9 },
-+ { 0x00c289, 10 },
-+ { 0x00c28a, 11 },
-+ { 0x00c28b, 12 },
-+ { 0x00c28c, 13 },
-+ { 0x00c28d, 14 },
-+ { 0x00c28e, 15 },
-+ { 0x00c28f, 16 },
-+ { 0x00c290, 17 },
-+ { 0x00c291, 18 },
-+ { 0x00c292, 19 },
-+ { 0x00c293, 20 },
-+ { 0x00c294, 21 },
-+ { 0x00c295, 22 },
-+ { 0x00c296, 23 },
-+ { 0x00c297, 24 },
-+ { 0x00c298, 25 },
-+ { 0x00c299, 26 },
-+ { 0x00c29a, 27 },
-+ { 0x00c29b, 28 },
-+ { 0x00c29c, 29 },
-+ { 0x00c29d, 30 },
-+ { 0x00c29e, 31 },
-+ { 0x00c29f, 32 },
-+ { 0x00c2a0, 33 },
-+ { 0x00c2a1, 34 },
-+ { 0x00c2a2, 35 },
-+ { 0x00c2a3, 36 },
-+ { 0x00c2a4, 37 },
-+ { 0x00c2a5, 38 },
-+ { 0x00c2a6, 39 },
-+ { 0x00c2a7, 40 },
-+ { 0x00c2a8, 41 },
-+ { 0x00c2a9, 42 },
-+ { 0x00c2aa, 43 },
-+ { 0x00c2ab, 44 },
-+ { 0x00c2ac, 45 },
-+ { 0x00c2ad, 46 },
-+ { 0x00c2ae, 47 },
-+ { 0x00c2af, 48 },
-+ { 0x00c2b0, 49 },
-+ { 0x00c2b1, 50 },
-+ { 0x00c2b2, 51 },
-+ { 0x00c2b3, 52 },
-+ { 0x00c2b4, 53 },
-+ { 0x00c2b5, 54 },
-+ { 0x00c2b6, 55 },
-+ { 0x00c2b7, 56 },
-+ { 0x00c2b8, 57 },
-+ { 0x00c2b9, 58 },
-+ { 0x00c2ba, 59 },
-+ { 0x00c2bb, 60 },
-+ { 0x00c2bc, 61 },
-+ { 0x00c2bd, 62 },
-+ { 0x00c2be, 63 },
-+ { 0x00c2bf, 64 },
-+ { 0x00c380, 65 },
-+ { 0x00c381, 66 },
-+ { 0x00c382, 67 },
-+ { 0x00c383, 68 },
-+ { 0x00c384, 69 },
-+ { 0x00c385, 70 },
-+ { 0x00c386, 71 },
-+ { 0x00c387, 72 },
-+ { 0x00c388, 73 },
-+ { 0x00c389, 74 },
-+ { 0x00c38a, 75 },
-+ { 0x00c38b, 76 },
-+ { 0x00c38c, 77 },
-+ { 0x00c38d, 78 },
-+ { 0x00c38e, 79 },
-+ { 0x00c38f, 80 },
-+ { 0x00c390, 81 },
-+ { 0x00c391, 82 },
-+ { 0x00c392, 83 },
-+ { 0x00c393, 84 },
-+ { 0x00c394, 85 },
-+ { 0x00c395, 86 },
-+ { 0x00c396, 87 },
-+ { 0x00c397, 88 },
-+ { 0x00c398, 89 },
-+ { 0x00c399, 90 },
-+ { 0x00c39a, 91 },
-+ { 0x00c39b, 92 },
-+ { 0x00c39c, 93 },
-+ { 0x00c39d, 94 },
-+ { 0x00c39e, 95 },
-+ { 0x00c39f, 96 },
-+ { 0x00c3a0, 97 },
-+ { 0x00c3a1, 98 },
-+ { 0x00c3a2, 99 },
-+ { 0x00c3a3, 100 },
-+ { 0x00c3a4, 101 },
-+ { 0x00c3a5, 102 },
-+ { 0x00c3a6, 103 },
-+ { 0x00c3a7, 104 },
-+ { 0x00c3a8, 105 },
-+ { 0x00c3a9, 106 },
-+ { 0x00c3aa, 107 },
-+ { 0x00c3ab, 108 },
-+ { 0x00c3ac, 109 },
-+ { 0x00c3ad, 110 },
-+ { 0x00c3ae, 111 },
-+ { 0x00c3af, 112 },
-+ { 0x00c3b0, 113 },
-+ { 0x00c3b1, 114 },
-+ { 0x00c3b2, 115 },
-+ { 0x00c3b3, 116 },
-+ { 0x00c3b4, 117 },
-+ { 0x00c3b5, 118 },
-+ { 0x00c3b6, 119 },
-+ { 0x00c3b7, 120 },
-+ { 0x00c3b8, 121 },
-+ { 0x00c3b9, 122 },
-+ { 0x00c3ba, 123 },
-+ { 0x00c3bb, 124 },
-+ { 0x00c3bc, 125 },
-+ { 0x00c3bd, 126 },
-+ { 0x00c3be, 127 },
-+ { 0x00c3bf, 128 },
-+ { 0x00c482, 129 },
-+ { 0x00c483, 130 },
-+ { 0x00c484, 131 },
-+ { 0x00c485, 132 },
-+ { 0x00c486, 133 },
-+ { 0x00c487, 134 },
-+ { 0x00c488, 135 },
-+ { 0x00c489, 136 },
-+ { 0x00c48a, 137 },
-+ { 0x00c48b, 138 },
-+ { 0x00c48c, 139 },
-+ { 0x00c48d, 140 },
-+ { 0x00c48e, 141 },
-+ { 0x00c48f, 142 },
-+ { 0x00c490, 143 },
-+ { 0x00c491, 144 },
-+ { 0x00c498, 145 },
-+ { 0x00c499, 146 },
-+ { 0x00c49a, 147 },
-+ { 0x00c49b, 148 },
-+ { 0x00c49c, 149 },
-+ { 0x00c49d, 150 },
-+ { 0x00c49e, 151 },
-+ { 0x00c49f, 152 },
-+ { 0x00c4a0, 153 },
-+ { 0x00c4a1, 154 },
-+ { 0x00c4a4, 155 },
-+ { 0x00c4a5, 156 },
-+ { 0x00c4a6, 157 },
-+ { 0x00c4a7, 158 },
-+ { 0x00c4b0, 159 },
-+ { 0x00c4b1, 160 },
-+ { 0x00c4b4, 161 },
-+ { 0x00c4b5, 162 },
-+ { 0x00c4b9, 163 },
-+ { 0x00c4ba, 164 },
-+ { 0x00c4bd, 165 },
-+ { 0x00c4be, 166 },
-+ { 0x00c581, 167 },
-+ { 0x00c582, 168 },
-+ { 0x00c583, 169 },
-+ { 0x00c584, 170 },
-+ { 0x00c587, 171 },
-+ { 0x00c588, 172 },
-+ { 0x00c590, 173 },
-+ { 0x00c591, 174 },
-+ { 0x00c592, 175 },
-+ { 0x00c593, 176 },
-+ { 0x00c594, 177 },
-+ { 0x00c595, 178 },
-+ { 0x00c598, 179 },
-+ { 0x00c599, 180 },
-+ { 0x00c59a, 181 },
-+ { 0x00c59b, 182 },
-+ { 0x00c59c, 183 },
-+ { 0x00c59d, 184 },
-+ { 0x00c59e, 185 },
-+ { 0x00c59f, 186 },
-+ { 0x00c5a0, 187 },
-+ { 0x00c5a1, 188 },
-+ { 0x00c5a2, 189 },
-+ { 0x00c5a3, 190 },
-+ { 0x00c5a4, 191 },
-+ { 0x00c5a5, 192 },
-+ { 0x00c5ac, 193 },
-+ { 0x00c5ad, 194 },
-+ { 0x00c5ae, 195 },
-+ { 0x00c5af, 196 },
-+ { 0x00c5b0, 197 },
-+ { 0x00c5b1, 198 },
-+ { 0x00c5b8, 199 },
-+ { 0x00c5b9, 200 },
-+ { 0x00c5ba, 201 },
-+ { 0x00c5bb, 202 },
-+ { 0x00c5bc, 203 },
-+ { 0x00c5bd, 204 },
-+ { 0x00c5be, 205 },
-+ { 0x00c692, 206 },
-+ { 0x00c89a, 207 },
-+ { 0x00cb86, 208 },
-+ { 0x00cb87, 209 },
-+ { 0x00cb98, 210 },
-+ { 0x00cb99, 211 },
-+ { 0x00cb9b, 212 },
-+ { 0x00cb9c, 213 },
-+ { 0x00cb9d, 214 },
-+ { 0x00d081, 215 },
-+ { 0x00d082, 216 },
-+ { 0x00d083, 217 },
-+ { 0x00d084, 218 },
-+ { 0x00d085, 219 },
-+ { 0x00d086, 220 },
-+ { 0x00d087, 221 },
-+ { 0x00d088, 222 },
-+ { 0x00d089, 223 },
-+ { 0x00d08a, 224 },
-+ { 0x00d08b, 225 },
-+ { 0x00d08c, 226 },
-+ { 0x00d08e, 227 },
-+ { 0x00d08f, 228 },
-+ { 0x00d090, 229 },
-+ { 0x00d091, 230 },
-+ { 0x00d092, 231 },
-+ { 0x00d093, 232 },
-+ { 0x00d094, 233 },
-+ { 0x00d095, 234 },
-+ { 0x00d096, 235 },
-+ { 0x00d097, 236 },
-+ { 0x00d098, 237 },
-+ { 0x00d099, 238 },
-+ { 0x00d09a, 239 },
-+ { 0x00d09b, 240 },
-+ { 0x00d09c, 241 },
-+ { 0x00d09d, 242 },
-+ { 0x00d09e, 243 },
-+ { 0x00d09f, 244 },
-+ { 0x00d0a0, 245 },
-+ { 0x00d0a1, 246 },
-+ { 0x00d0a2, 247 },
-+ { 0x00d0a3, 248 },
-+ { 0x00d0a4, 249 },
-+ { 0x00d0a5, 250 },
-+ { 0x00d0a6, 251 },
-+ { 0x00d0a7, 252 },
-+ { 0x00d0a8, 253 },
-+ { 0x00d0a9, 254 },
-+ { 0x00d0aa, 255 },
-+ { 0x00d0ab, 256 },
-+ { 0x00d0ac, 257 },
-+ { 0x00d0ad, 258 },
-+ { 0x00d0ae, 259 },
-+ { 0x00d0af, 260 },
-+ { 0x00d0b0, 261 },
-+ { 0x00d0b1, 262 },
-+ { 0x00d0b2, 263 },
-+ { 0x00d0b3, 264 },
-+ { 0x00d0b4, 265 },
-+ { 0x00d0b5, 266 },
-+ { 0x00d0b6, 267 },
-+ { 0x00d0b7, 268 },
-+ { 0x00d0b8, 269 },
-+ { 0x00d0b9, 270 },
-+ { 0x00d0ba, 271 },
-+ { 0x00d0bb, 272 },
-+ { 0x00d0bc, 273 },
-+ { 0x00d0bd, 274 },
-+ { 0x00d0be, 275 },
-+ { 0x00d0bf, 276 },
-+ { 0x00d180, 277 },
-+ { 0x00d181, 278 },
-+ { 0x00d182, 279 },
-+ { 0x00d183, 280 },
-+ { 0x00d184, 281 },
-+ { 0x00d185, 282 },
-+ { 0x00d186, 283 },
-+ { 0x00d187, 284 },
-+ { 0x00d188, 285 },
-+ { 0x00d189, 286 },
-+ { 0x00d18a, 287 },
-+ { 0x00d18b, 288 },
-+ { 0x00d18c, 289 },
-+ { 0x00d18d, 290 },
-+ { 0x00d18e, 291 },
-+ { 0x00d18f, 292 },
-+ { 0x00d191, 293 },
-+ { 0x00d192, 294 },
-+ { 0x00d193, 295 },
-+ { 0x00d194, 296 },
-+ { 0x00d195, 297 },
-+ { 0x00d196, 298 },
-+ { 0x00d197, 299 },
-+ { 0x00d198, 300 },
-+ { 0x00d199, 301 },
-+ { 0x00d19a, 302 },
-+ { 0x00d19b, 303 },
-+ { 0x00d19c, 304 },
-+ { 0x00d19e, 305 },
-+ { 0x00d19f, 306 },
-+ { 0x00d290, 307 },
-+ { 0x00d291, 308 },
-+ { 0xe28093, 309 },
-+ { 0xe28094, 310 },
-+ { 0xe28098, 311 },
-+ { 0xe28099, 312 },
-+ { 0xe2809a, 313 },
-+ { 0xe2809c, 314 },
-+ { 0xe2809d, 315 },
-+ { 0xe2809e, 316 },
-+ { 0xe280a0, 317 },
-+ { 0xe280a1, 318 },
-+ { 0xe280a2, 319 },
-+ { 0xe280a6, 320 },
-+ { 0xe280b0, 321 },
-+ { 0xe280b9, 322 },
-+ { 0xe280ba, 323 },
-+ { 0xe282ac, 324 },
-+ { 0xe28496, 325 },
-+ { 0xe284a2, 326 },
-+ { 0xe28899, 327 },
-+ { 0xe2889a, 328 },
-+ { 0xe28988, 329 },
-+ { 0xe289a4, 330 },
-+ { 0xe289a5, 331 },
-+ { 0xe28ca0, 332 },
-+ { 0xe28ca1, 333 },
-+ { 0xe29480, 334 },
-+ { 0xe29482, 335 },
-+ { 0xe2948c, 336 },
-+ { 0xe29490, 337 },
-+ { 0xe29494, 338 },
-+ { 0xe29498, 339 },
-+ { 0xe2949c, 340 },
-+ { 0xe294a4, 341 },
-+ { 0xe294ac, 342 },
-+ { 0xe294b4, 343 },
-+ { 0xe294bc, 344 },
-+ { 0xe29590, 345 },
-+ { 0xe29591, 346 },
-+ { 0xe29592, 347 },
-+ { 0xe29593, 348 },
-+ { 0xe29594, 349 },
-+ { 0xe29595, 350 },
-+ { 0xe29596, 351 },
-+ { 0xe29597, 352 },
-+ { 0xe29598, 353 },
-+ { 0xe29599, 354 },
-+ { 0xe2959a, 355 },
-+ { 0xe2959b, 356 },
-+ { 0xe2959c, 357 },
-+ { 0xe2959d, 358 },
-+ { 0xe2959e, 359 },
-+ { 0xe2959f, 360 },
-+ { 0xe295a0, 361 },
-+ { 0xe295a1, 362 },
-+ { 0xe295a2, 363 },
-+ { 0xe295a3, 364 },
-+ { 0xe295a4, 365 },
-+ { 0xe295a5, 366 },
-+ { 0xe295a6, 367 },
-+ { 0xe295a7, 368 },
-+ { 0xe295a8, 369 },
-+ { 0xe295a9, 370 },
-+ { 0xe295aa, 371 },
-+ { 0xe295ab, 372 },
-+ { 0xe295ac, 373 },
-+ { 0xe29680, 374 },
-+ { 0xe29684, 375 },
-+ { 0xe29688, 376 },
-+ { 0xe2968c, 377 },
-+ { 0xe29690, 378 },
-+ { 0xe29691, 379 },
-+ { 0xe29692, 380 },
-+ { 0xe29693, 381 },
-+ { 0xe296a0, 382 },
-+ { 0x000000, 0 }
-+ };
-+
-diff -urN vsftpd-2.0.5.org/char_maps/western.map vsftpd-2.0.5/char_maps/western.map
---- vsftpd-2.0.5.org/char_maps/western.map 1970-01-01 03:00:00.000000000 +0300
-+++ vsftpd-2.0.5/char_maps/western.map 2008-01-13 20:09:59.000000000 +0200
-@@ -0,0 +1,669 @@
-+/*
-+ !!! WARNING !!!
-+ DON'T CHANGE ORDER OF CHARS
-+*/
-+
-+struct codepage_map codepage_utf8west_array[] =
-+ {
-+ { 0x000003, 155 }, // max size , char count
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00003f, 0 },
-+ { 0x00c280, 1 },
-+ { 0x00c281, 2 },
-+ { 0x00c282, 3 },
-+ { 0x00c283, 4 },
-+ { 0x00c284, 5 },
-+ { 0x00c285, 6 },
-+ { 0x00c286, 7 },
-+ { 0x00c287, 8 },
-+ { 0x00c288, 9 },
-+ { 0x00c289, 10 },
-+ { 0x00c28a, 11 },
-+ { 0x00c28b, 12 },
-+ { 0x00c28c, 13 },
-+ { 0x00c28d, 14 },
-+ { 0x00c28e, 15 },
-+ { 0x00c28f, 16 },
-+ { 0x00c290, 17 },
-+ { 0x00c291, 18 },
-+ { 0x00c292, 19 },
-+ { 0x00c293, 20 },
-+ { 0x00c294, 21 },
-+ { 0x00c295, 22 },
-+ { 0x00c296, 23 },
-+ { 0x00c297, 24 },
-+ { 0x00c298, 25 },
-+ { 0x00c299, 26 },
-+ { 0x00c29a, 27 },
-+ { 0x00c29b, 28 },
-+ { 0x00c29c, 29 },
-+ { 0x00c29d, 30 },
-+ { 0x00c29e, 31 },
-+ { 0x00c29f, 32 },
-+ { 0x00c2a0, 33 },
-+ { 0x00c2a1, 34 },
-+ { 0x00c2a2, 35 },
-+ { 0x00c2a3, 36 },
-+ { 0x00c2a4, 37 },
-+ { 0x00c2a5, 38 },
-+ { 0x00c2a6, 39 },
-+ { 0x00c2a7, 40 },
-+ { 0x00c2a8, 41 },
-+ { 0x00c2a9, 42 },
-+ { 0x00c2aa, 43 },
-+ { 0x00c2ab, 44 },
-+ { 0x00c2ac, 45 },
-+ { 0x00c2ad, 46 },
-+ { 0x00c2ae, 47 },
-+ { 0x00c2af, 48 },
-+ { 0x00c2b0, 49 },
-+ { 0x00c2b1, 50 },
-+ { 0x00c2b2, 51 },
-+ { 0x00c2b3, 52 },
-+ { 0x00c2b4, 53 },
-+ { 0x00c2b5, 54 },
-+ { 0x00c2b6, 55 },
-+ { 0x00c2b7, 56 },
-+ { 0x00c2b8, 57 },
-+ { 0x00c2b9, 58 },
-+ { 0x00c2ba, 59 },
-+ { 0x00c2bb, 60 },
-+ { 0x00c2bc, 61 },
-+ { 0x00c2bd, 62 },
-+ { 0x00c2be, 63 },
-+ { 0x00c2bf, 64 },
-+ { 0x00c380, 65 },
-+ { 0x00c381, 66 },
-+ { 0x00c382, 67 },
-+ { 0x00c383, 68 },
-+ { 0x00c384, 69 },
-+ { 0x00c385, 70 },
-+ { 0x00c386, 71 },
-+ { 0x00c387, 72 },
-+ { 0x00c388, 73 },
-+ { 0x00c389, 74 },
-+ { 0x00c38a, 75 },
-+ { 0x00c38b, 76 },
-+ { 0x00c38c, 77 },
-+ { 0x00c38d, 78 },
-+ { 0x00c38e, 79 },
-+ { 0x00c38f, 80 },
-+ { 0x00c390, 81 },
-+ { 0x00c391, 82 },
-+ { 0x00c392, 83 },
-+ { 0x00c393, 84 },
-+ { 0x00c394, 85 },
-+ { 0x00c395, 86 },
-+ { 0x00c396, 87 },
-+ { 0x00c397, 88 },
-+ { 0x00c398, 89 },
-+ { 0x00c399, 90 },
-+ { 0x00c39a, 91 },
-+ { 0x00c39b, 92 },
-+ { 0x00c39c, 93 },
-+ { 0x00c39d, 94 },
-+ { 0x00c39e, 95 },
-+ { 0x00c39f, 96 },
-+ { 0x00c3a0, 97 },
-+ { 0x00c3a1, 98 },
-+ { 0x00c3a2, 99 },
-+ { 0x00c3a3, 100 },
-+ { 0x00c3a4, 101 },
-+ { 0x00c3a5, 102 },
-+ { 0x00c3a6, 103 },
-+ { 0x00c3a7, 104 },
-+ { 0x00c3a8, 105 },
-+ { 0x00c3a9, 106 },
-+ { 0x00c3aa, 107 },
-+ { 0x00c3ab, 108 },
-+ { 0x00c3ac, 109 },
-+ { 0x00c3ad, 110 },
-+ { 0x00c3ae, 111 },
-+ { 0x00c3af, 112 },
-+ { 0x00c3b0, 113 },
-+ { 0x00c3b1, 114 },
-+ { 0x00c3b2, 115 },
-+ { 0x00c3b3, 116 },
-+ { 0x00c3b4, 117 },
-+ { 0x00c3b5, 118 },
-+ { 0x00c3b6, 119 },
-+ { 0x00c3b7, 120 },
-+ { 0x00c3b8, 121 },
-+ { 0x00c3b9, 122 },
-+ { 0x00c3ba, 123 },
-+ { 0x00c3bb, 124 },
-+ { 0x00c3bc, 125 },
-+ { 0x00c3bd, 126 },
-+ { 0x00c3be, 127 },
-+ { 0x00c3bf, 128 },
-+ { 0x00c592, 129 },
-+ { 0x00c593, 130 },
-+ { 0x00c5a0, 131 },
-+ { 0x00c5a1, 132 },
-+ { 0x00c5b8, 133 },
-+ { 0x00c5bd, 134 },
-+ { 0x00c5be, 135 },
-+ { 0x00c692, 136 },
-+ { 0x00cb86, 137 },
-+ { 0x00cb9c, 138 },
-+ { 0xe28093, 139 },
-+ { 0xe28094, 140 },
-+ { 0xe28098, 141 },
-+ { 0xe28099, 142 },
-+ { 0xe2809a, 143 },
-+ { 0xe2809c, 144 },
-+ { 0xe2809d, 145 },
-+ { 0xe2809e, 146 },
-+ { 0xe280a0, 147 },
-+ { 0xe280a1, 148 },
-+ { 0xe280a2, 149 },
-+ { 0xe280a6, 150 },
-+ { 0xe280b0, 151 },
-+ { 0xe280b9, 152 },
-+ { 0xe280ba, 153 },
-+ { 0xe282ac, 154 },
-+ { 0xe284a2, 155 },
-+ { 0x000000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso1_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b3, 52 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x0000, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_iso15_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x0080, 1 },
-+ { 0x0081, 2 },
-+ { 0x0082, 3 },
-+ { 0x0083, 4 },
-+ { 0x0084, 5 },
-+ { 0x0085, 6 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0088, 9 },
-+ { 0x0089, 10 },
-+ { 0x008a, 11 },
-+ { 0x008b, 12 },
-+ { 0x008c, 13 },
-+ { 0x008d, 14 },
-+ { 0x008e, 15 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0095, 22 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0098, 25 },
-+ { 0x0099, 26 },
-+ { 0x009a, 27 },
-+ { 0x009b, 28 },
-+ { 0x009c, 29 },
-+ { 0x009d, 30 },
-+ { 0x009e, 31 },
-+ { 0x009f, 32 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x003f, 0 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b3, 52 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a4, 37 },
-+ { 0x003f, 0 },
-+ { 0x0000, 0 }
-+ };
-+
-+struct codepage_map codepage_win1252_array[] =
-+ {
-+ { 0x0001, 128 }, // max size , char count for control
-+ { 0x0081, 2 },
-+ { 0x008d, 14 },
-+ { 0x008f, 16 },
-+ { 0x0090, 17 },
-+ { 0x009d, 30 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x003f, 0 },
-+ { 0x00a0, 33 },
-+ { 0x00a1, 34 },
-+ { 0x00a2, 35 },
-+ { 0x00a3, 36 },
-+ { 0x00a4, 37 },
-+ { 0x00a5, 38 },
-+ { 0x00a6, 39 },
-+ { 0x00a7, 40 },
-+ { 0x00a8, 41 },
-+ { 0x00a9, 42 },
-+ { 0x00aa, 43 },
-+ { 0x00ab, 44 },
-+ { 0x00ac, 45 },
-+ { 0x00ad, 46 },
-+ { 0x00ae, 47 },
-+ { 0x00af, 48 },
-+ { 0x00b0, 49 },
-+ { 0x00b1, 50 },
-+ { 0x00b2, 51 },
-+ { 0x00b3, 52 },
-+ { 0x00b4, 53 },
-+ { 0x00b5, 54 },
-+ { 0x00b6, 55 },
-+ { 0x00b7, 56 },
-+ { 0x00b8, 57 },
-+ { 0x00b9, 58 },
-+ { 0x00ba, 59 },
-+ { 0x00bb, 60 },
-+ { 0x00bc, 61 },
-+ { 0x00bd, 62 },
-+ { 0x00be, 63 },
-+ { 0x00bf, 64 },
-+ { 0x00c0, 65 },
-+ { 0x00c1, 66 },
-+ { 0x00c2, 67 },
-+ { 0x00c3, 68 },
-+ { 0x00c4, 69 },
-+ { 0x00c5, 70 },
-+ { 0x00c6, 71 },
-+ { 0x00c7, 72 },
-+ { 0x00c8, 73 },
-+ { 0x00c9, 74 },
-+ { 0x00ca, 75 },
-+ { 0x00cb, 76 },
-+ { 0x00cc, 77 },
-+ { 0x00cd, 78 },
-+ { 0x00ce, 79 },
-+ { 0x00cf, 80 },
-+ { 0x00d0, 81 },
-+ { 0x00d1, 82 },
-+ { 0x00d2, 83 },
-+ { 0x00d3, 84 },
-+ { 0x00d4, 85 },
-+ { 0x00d5, 86 },
-+ { 0x00d6, 87 },
-+ { 0x00d7, 88 },
-+ { 0x00d8, 89 },
-+ { 0x00d9, 90 },
-+ { 0x00da, 91 },
-+ { 0x00db, 92 },
-+ { 0x00dc, 93 },
-+ { 0x00dd, 94 },
-+ { 0x00de, 95 },
-+ { 0x00df, 96 },
-+ { 0x00e0, 97 },
-+ { 0x00e1, 98 },
-+ { 0x00e2, 99 },
-+ { 0x00e3, 100 },
-+ { 0x00e4, 101 },
-+ { 0x00e5, 102 },
-+ { 0x00e6, 103 },
-+ { 0x00e7, 104 },
-+ { 0x00e8, 105 },
-+ { 0x00e9, 106 },
-+ { 0x00ea, 107 },
-+ { 0x00eb, 108 },
-+ { 0x00ec, 109 },
-+ { 0x00ed, 110 },
-+ { 0x00ee, 111 },
-+ { 0x00ef, 112 },
-+ { 0x00f0, 113 },
-+ { 0x00f1, 114 },
-+ { 0x00f2, 115 },
-+ { 0x00f3, 116 },
-+ { 0x00f4, 117 },
-+ { 0x00f5, 118 },
-+ { 0x00f6, 119 },
-+ { 0x00f7, 120 },
-+ { 0x00f8, 121 },
-+ { 0x00f9, 122 },
-+ { 0x00fa, 123 },
-+ { 0x00fb, 124 },
-+ { 0x00fc, 125 },
-+ { 0x00fd, 126 },
-+ { 0x00fe, 127 },
-+ { 0x00ff, 128 },
-+ { 0x008c, 13 },
-+ { 0x009c, 29 },
-+ { 0x008a, 11 },
-+ { 0x009a, 27 },
-+ { 0x009f, 32 },
-+ { 0x008e, 15 },
-+ { 0x009e, 31 },
-+ { 0x0083, 4 },
-+ { 0x0088, 9 },
-+ { 0x0098, 25 },
-+ { 0x0096, 23 },
-+ { 0x0097, 24 },
-+ { 0x0091, 18 },
-+ { 0x0092, 19 },
-+ { 0x0082, 3 },
-+ { 0x0093, 20 },
-+ { 0x0094, 21 },
-+ { 0x0084, 5 },
-+ { 0x0086, 7 },
-+ { 0x0087, 8 },
-+ { 0x0095, 22 },
-+ { 0x0085, 6 },
-+ { 0x0089, 10 },
-+ { 0x008b, 12 },
-+ { 0x009b, 28 },
-+ { 0x0080, 1 },
-+ { 0x0099, 26 },
-+ { 0x0000, 0 }
-+ };
-+
-diff -urN vsftpd-2.0.5.org/ftpcmdio.c vsftpd-2.0.5/ftpcmdio.c
---- vsftpd-2.0.5.org/ftpcmdio.c 2005-03-04 02:42:34.000000000 +0200
-+++ vsftpd-2.0.5/ftpcmdio.c 2008-01-13 19:34:50.000000000 +0200
-@@ -19,6 +19,7 @@
- #include "logging.h"
- #include "session.h"
- #include "readwrite.h"
-+#include "charconv.h"
-
- /* Internal functions */
- static void control_getline(struct mystr* p_str, struct vsf_session* p_sess);
-@@ -125,9 +126,13 @@
- vsf_log_line(p_sess, kVSFLogEntryFTPOutput, &s_write_buf_str);
- }
- str_copy(&s_text_mangle_str, p_str);
-+ vsf_charconv_convert(p_sess, &s_text_mangle_str, VSFTP_CONVDIRECT_FORWARD);
- /* Process the output response according to the specifications.. */
- /* Escape telnet characters properly */
-- str_replace_text(&s_text_mangle_str, "\377", "\377\377");
-+// if (tunable_double_377)
-+ {
-+ str_replace_text(&s_text_mangle_str, "\377", "\377\377");
-+ }
- /* Change \n for \0 in response */
- str_replace_char(&s_text_mangle_str, '\n', '\0');
- /* Build string to squirt down network */
-@@ -213,5 +218,6 @@
- --len;
- }
- }
-+ vsf_charconv_convert(p_sess, p_str, VSFTP_CONVDIRECT_BACKWARD);
- }
-
-diff -urN vsftpd-2.0.5.org/ftpdataio.c vsftpd-2.0.5/ftpdataio.c
---- vsftpd-2.0.5.org/ftpdataio.c 2005-03-12 04:00:00.000000000 +0200
-+++ vsftpd-2.0.5/ftpdataio.c 2008-01-13 19:35:59.000000000 +0200
-@@ -296,7 +296,7 @@
- {
- p_subdir_list = &subdir_list;
- }
-- vsf_ls_populate_dir_list(&dir_list, p_subdir_list, p_dir, p_base_dir_str,
-+ vsf_ls_populate_dir_list(p_sess, &dir_list, p_subdir_list, p_dir, p_base_dir_str,
- p_option_str, p_filter_str, is_verbose);
- if (p_subdir_list)
- {
-diff -urN vsftpd-2.0.5.org/ls.c vsftpd-2.0.5/ls.c
---- vsftpd-2.0.5.org/ls.c 2005-05-24 00:55:00.000000000 +0300
-+++ vsftpd-2.0.5/ls.c 2008-01-13 19:32:28.000000000 +0200
-@@ -14,13 +14,16 @@
- #include "sysstr.h"
- #include "sysutil.h"
- #include "tunables.h"
-+#include "charconv.h"
-
--static void build_dir_line(struct mystr* p_str,
-+static void build_dir_line(struct vsf_session* p_sess,
-+ struct mystr* p_str,
- const struct mystr* p_filename_str,
- const struct vsf_sysutil_statbuf* p_stat);
-
- void
--vsf_ls_populate_dir_list(struct mystr_list* p_list,
-+vsf_ls_populate_dir_list(struct vsf_session* p_sess,
-+ struct mystr_list* p_list,
- struct mystr_list* p_subdir_list,
- struct vsf_sysutil_dir* p_dir,
- const struct mystr* p_base_dir_str,
-@@ -157,7 +160,7 @@
- {
- str_append_char(&s_final_file_str, '/');
- }
-- build_dir_line(&dirline_str, &s_final_file_str, s_p_statbuf);
-+ build_dir_line(p_sess, &dirline_str, &s_final_file_str, s_p_statbuf);
- }
- else
- {
-@@ -176,6 +179,7 @@
- str_append_char(&dirline_str, '@');
- }
- }
-+ vsf_charconv_convert(p_sess, &dirline_str, VSFTP_CONVDIRECT_FORWARD);
- str_append_text(&dirline_str, "\r\n");
- }
- /* Add filename into our sorted list - sorting by filename or time. Also,
-@@ -357,7 +361,7 @@
- }
-
- static void
--build_dir_line(struct mystr* p_str, const struct mystr* p_filename_str,
-+build_dir_line(struct vsf_session* p_sess, struct mystr* p_str, const struct mystr* p_filename_str,
- const struct vsf_sysutil_statbuf* p_stat)
- {
- static struct mystr s_tmp_str;
-@@ -431,6 +435,7 @@
- str_append_char(p_str, ' ');
- /* Filename */
- str_append_str(p_str, p_filename_str);
-+ vsf_charconv_convert(p_sess, p_str, VSFTP_CONVDIRECT_FORWARD);
- str_append_text(p_str, "\r\n");
- }
-
-diff -urN vsftpd-2.0.5.org/ls.h vsftpd-2.0.5/ls.h
---- vsftpd-2.0.5.org/ls.h 2003-09-15 13:43:40.000000000 +0300
-+++ vsftpd-2.0.5/ls.h 2008-01-13 19:32:30.000000000 +0200
-@@ -4,12 +4,14 @@
- struct mystr;
- struct mystr_list;
- struct vsf_sysutil_dir;
-+struct vsf_session;
-
- /* vsf_ls_populate_dir_list()
- * PURPOSE
- * Given a directory handle, populate a formatted directory entry list (/bin/ls
- * format). Also optionally populate a list of subdirectories.
- * PARAMETERS
-+ * p_sess - the current FTP session object
- * p_list - the string list object for the result list of entries
- * p_subdir_list - the string list object for the result list of
- * subdirectories. May be 0 if client is not interested.
-@@ -19,7 +21,8 @@
- * p_filter_str - the filter string given to LIST/NLST - e.g. "*.mp3"
- * is_verbose - set to 1 for LIST, 0 for NLST
- */
--void vsf_ls_populate_dir_list(struct mystr_list* p_list,
-+void vsf_ls_populate_dir_list(struct vsf_session* p_sess,
-+ struct mystr_list* p_list,
- struct mystr_list* p_subdir_list,
- struct vsf_sysutil_dir* p_dir,
- const struct mystr* p_base_dir_str,
-diff -urN vsftpd-2.0.5.org/main.c vsftpd-2.0.5/main.c
---- vsftpd-2.0.5.org/main.c 2006-07-03 15:26:08.000000000 +0300
-+++ vsftpd-2.0.5/main.c 2008-01-13 20:51:11.000000000 +0200
-@@ -63,7 +63,9 @@
- /* Secure connection state */
- 0, 0, 0, 0, 0, 0, -1, -1,
- /* Login fails */
-- 0
-+ 0,
-+ /* Filename charset conv */
-+ 0, 0,
- };
- int config_specified = 0;
- const char* p_config_name = VSFTP_DEFAULT_CONFIG;
-@@ -106,6 +108,12 @@
- }
- vsf_sysutil_free(p_statbuf);
- }
-+ /* Init local codepage */
-+ if (tunable_convert_charset_enable)
-+ {
-+ tunable_local_codepage = vsf_charconv_codepage(tunable_local_charset);
-+ tunable_convert_charset_enable = (tunable_local_codepage) ? 1 : 0;
-+ }
- /* Resolve pasv_address if required */
- if (tunable_pasv_address && tunable_pasv_addr_resolve)
- {
-diff -urN vsftpd-2.0.5.org/Makefile vsftpd-2.0.5/Makefile
---- vsftpd-2.0.5.org/Makefile 2006-07-03 15:25:41.000000000 +0300
-+++ vsftpd-2.0.5/Makefile 2008-01-13 19:39:58.000000000 +0200
-@@ -14,7 +14,7 @@
- banner.o filestr.o parseconf.o secutil.o \
- ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o \
- tcpwrap.o ipaddrparse.o access.o features.o readwrite.o \
-- ssl.o sysutil.o sysdeputil.o
-+ ssl.o sysutil.o sysdeputil.o charconv.o
-
-
- .c.o:
-diff -urN vsftpd-2.0.5.org/parseconf.c vsftpd-2.0.5/parseconf.c
---- vsftpd-2.0.5.org/parseconf.c 2006-07-02 02:05:10.000000000 +0300
-+++ vsftpd-2.0.5/parseconf.c 2008-01-13 20:21:57.000000000 +0200
-@@ -99,6 +99,7 @@
- { "mdtm_write", &tunable_mdtm_write },
- { "lock_upload_files", &tunable_lock_upload_files },
- { "pasv_addr_resolve", &tunable_pasv_addr_resolve },
-+ { "convert_charset_enable", &tunable_convert_charset_enable },
- { 0, 0 }
- };
-
-@@ -168,6 +169,8 @@
- { "ssl_ciphers", &tunable_ssl_ciphers },
- { "rsa_private_key_file", &tunable_rsa_private_key_file },
- { "dsa_private_key_file", &tunable_dsa_private_key_file },
-+ { "local_charset", &tunable_local_charset },
-+ { "remote_charset", &tunable_remote_charset },
- { 0, 0 }
- };
-
-diff -urN vsftpd-2.0.5.org/postlogin.c vsftpd-2.0.5/postlogin.c
---- vsftpd-2.0.5.org/postlogin.c 2006-06-12 01:45:25.000000000 +0300
-+++ vsftpd-2.0.5/postlogin.c 2008-01-13 20:58:37.000000000 +0200
-@@ -25,6 +25,7 @@
- #include "access.h"
- #include "features.h"
- #include "ssl.h"
-+#include "charconv.h"
- #include "vsftpver.h"
-
- /* Private local functions */
-@@ -98,6 +99,17 @@
- /* Handle any login message */
- vsf_banner_dir_changed(p_sess, FTP_LOGINOK);
- vsf_cmdio_write(p_sess, FTP_LOGINOK, "Login successful.");
-+ if (tunable_convert_charset_enable)
-+ {
-+ vsf_charconv_init_local_codepage(tunable_local_codepage);
-+ tunable_remote_codepage = vsf_charconv_codepage(tunable_remote_charset);
-+ p_sess->remote_charset = tunable_remote_codepage;
-+ p_sess->enable_conversion = vsf_charconv_avail_convertion(tunable_local_codepage, p_sess->remote_charset);
-+ }
-+ else
-+ {
-+ p_sess->enable_conversion = 0;
-+ }
- while(1)
- {
- int cmd_ok = 1;
-diff -urN vsftpd-2.0.5.org/session.h vsftpd-2.0.5/session.h
---- vsftpd-2.0.5.org/session.h 2006-07-02 03:34:48.000000000 +0300
-+++ vsftpd-2.0.5/session.h 2008-01-13 20:39:41.000000000 +0200
-@@ -91,6 +91,10 @@
- int ssl_slave_fd;
- int ssl_consumer_fd;
- unsigned int login_fails;
-+
-+ /* Filename charset conv */
-+ int enable_conversion;
-+ int remote_charset;
- };
-
- #endif /* VSF_SESSION_H */
-diff -urN vsftpd-2.0.5.org/tunables.c vsftpd-2.0.5/tunables.c
---- vsftpd-2.0.5.org/tunables.c 2006-07-02 02:06:56.000000000 +0300
-+++ vsftpd-2.0.5/tunables.c 2008-01-13 20:24:57.000000000 +0200
-@@ -71,6 +71,9 @@
- int tunable_mdtm_write = 1;
- int tunable_lock_upload_files = 1;
- int tunable_pasv_addr_resolve = 0;
-+int tunable_convert_charset_enable = 0;
-+int tunable_local_codepage = 0;
-+int tunable_remote_codepage = 0;
-
- unsigned int tunable_accept_timeout = 60;
- unsigned int tunable_connect_timeout = 60;
-@@ -125,4 +128,6 @@
- const char* tunable_ssl_ciphers = "DES-CBC3-SHA";
- const char* tunable_rsa_private_key_file = 0;
- const char* tunable_dsa_private_key_file = 0;
-+const char* tunable_local_charset = "NONE";
-+const char* tunable_remote_charset = "NONE";
-
-diff -urN vsftpd-2.0.5.org/tunables.h vsftpd-2.0.5/tunables.h
---- vsftpd-2.0.5.org/tunables.h 2006-07-02 02:07:00.000000000 +0300
-+++ vsftpd-2.0.5/tunables.h 2008-01-13 20:28:11.000000000 +0200
-@@ -67,6 +67,9 @@
- extern int tunable_mdtm_write; /* Allow MDTM to set timestamps */
- extern int tunable_lock_upload_files; /* Lock uploading files */
- extern int tunable_pasv_addr_resolve; /* DNS resolve pasv_addr */
-+extern int tunable_convert_charset_enable; /* Allow converting charsets for file names */
-+extern int tunable_local_codepage; /* Code of local charset */
-+extern int tunable_remote_codepage; /* Code of remote charset */
-
- /* Integer/numeric defines */
- extern unsigned int tunable_accept_timeout;
-@@ -120,6 +123,8 @@
- extern const char* tunable_ssl_ciphers;
- extern const char* tunable_rsa_private_key_file;
- extern const char* tunable_dsa_private_key_file;
-+extern const char* tunable_local_charset;
-+extern const char* tunable_remote_charset;
-
- #endif /* VSF_TUNABLES_H */
-
diff --git a/packages/vsftpd/vsftpd-charconv_2.0.5.bb b/packages/vsftpd/vsftpd-charconv_2.0.5.bb
deleted file mode 100644
index cc559c6259..0000000000
--- a/packages/vsftpd/vsftpd-charconv_2.0.5.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-DESCRIPTION = "Secure ftp daemon with filename charconv"
-SECTION = "console/network"
-LICENSE = "GPL"
-PR = "r1"
-
-FILESPATH_append = ":${@os.path.dirname(bb.data.getVar('FILE',d,1))}/vsftpd-2.0.5"
-
-SRC_URI = "ftp://vsftpd.beasts.org/users/cevans/vsftpd-${PV}.tar.gz \
- file://vsftpd-charconv.patch;patch=1 \
- file://makefile.patch;patch=1 \
- file://nopam.patch;patch=1 \
- file://syscall.patch;patch=1 \
- file://init \
- file://vsftpd.conf"
-
-S = "${WORKDIR}/vsftpd-2.0.5"
-
-inherit update-rc.d
-
-do_configure() {
- # Fix hardcoded /usr, /etc, /var mess.
- cat tunables.c|sed s:\"/usr:\"${prefix}:g|sed s:\"/var:\"${localstatedir}:g \
- |sed s:\"${prefix}/share/empty:\"${localstatedir}/share/empty:g |sed s:\"/etc:\"${sysconfdir}:g > tunables.c.new
- mv tunables.c.new tunables.c
-}
-
-do_compile() {
- oe_runmake "LIBS=-lcrypt -L${STAGING_LIBDIR}"
-}
-
-do_install() {
- install -d ${D}${sbindir}
- install -d ${D}${mandir}/man8
- install -d ${D}${mandir}/man5
- oe_runmake 'DESTDIR=${D}' install
- install -d ${D}${sysconfdir}
- install -m 0755 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}/vsftpd.conf
- install -d ${D}${sysconfdir}/init.d/
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/vsftpd
-}
-
-pkg_postinst() {
- addgroup ftp
- adduser --system --home /var/tmp/ftp --no-create-home --ingroup ftp --disabled-password -s /bin/false ftp
- mkdir -p ${localstatedir}/share/empty
-}
-
-INITSCRIPT_NAME = "vsftpd"
-
-INITSCRIPT_PARAMS = "defaults"
diff --git a/packages/vsftpd/vsftpd_2.0.5.bb b/packages/vsftpd/vsftpd_2.0.5.bb
deleted file mode 100644
index 0d7c7a1f00..0000000000
--- a/packages/vsftpd/vsftpd_2.0.5.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "Secure ftp daemon"
-SECTION = "console/network"
-LICENSE = "GPL"
-PR = "r2"
-
-SRC_URI = "ftp://vsftpd.beasts.org/users/cevans/vsftpd-${PV}.tar.gz \
- file://makefile.patch;patch=1 \
- file://nopam.patch;patch=1 \
- file://syscall.patch;patch=1 \
- file://init \
- file://vsftpd.conf"
-
-inherit update-rc.d
-
-do_configure() {
- # Fix hardcoded /usr, /etc, /var mess.
- cat tunables.c|sed s:\"/usr:\"${prefix}:g|sed s:\"/var:\"${localstatedir}:g \
- |sed s:\"${prefix}/share/empty:\"${localstatedir}/share/empty:g |sed s:\"/etc:\"${sysconfdir}:g > tunables.c.new
- mv tunables.c.new tunables.c
-}
-
-do_compile() {
- oe_runmake "LIBS=-lcrypt -L${STAGING_LIBDIR}"
-}
-
-do_install() {
- install -d ${D}${sbindir}
- install -d ${D}${mandir}/man8
- install -d ${D}${mandir}/man5
- oe_runmake 'DESTDIR=${D}' install
- install -d ${D}${sysconfdir}
- install -m 0755 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}/vsftpd.conf
- install -d ${D}${sysconfdir}/init.d/
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/vsftpd
-}
-
-pkg_postinst() {
- addgroup ftp
- adduser --system --home /var/lib/ftp --no-create-home --ingroup ftp --disabled-password -s /bin/false ftp
- mkdir -p ${localstatedir}/share/empty
-}
-
-INITSCRIPT_NAME = "vsftpd"
-
-INITSCRIPT_PARAMS = "defaults"