Remove --enable-recode feature, since it's been broken by IPv6 changes,
and seems to have too few users to justify maintaining.
This commit is contained in:
parent
f3c3deb7d0
commit
4c3c8c048d
7
INSTALL
7
INSTALL
@ -342,13 +342,6 @@ are encouraged to read in any case.
|
||||
installed in non-standard locations.
|
||||
Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
|
||||
|
||||
--enable-recode
|
||||
|
||||
Enables single-byte character set recode support. See the
|
||||
Administrator's Guide about this feature. Note that a more general
|
||||
form of character set conversion is supported in the default
|
||||
configuration; this feature is obsolete.
|
||||
|
||||
--enable-nls[=LANGUAGES]
|
||||
|
||||
Enables Native Language Support (NLS), that is, the ability to
|
||||
|
38
configure
vendored
38
configure
vendored
@ -838,7 +838,6 @@ Optional Features:
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--enable-integer-datetimes enable 64-bit integer date/time support
|
||||
--enable-recode enable single-byte recode support
|
||||
--enable-nls[=LANGUAGES] enable Native Language Support
|
||||
--disable-shared do not build shared libraries
|
||||
--disable-rpath do not embed shared library search path in executables
|
||||
@ -1597,43 +1596,6 @@ echo "$as_me:$LINENO: result: $enable_integer_datetimes" >&5
|
||||
echo "${ECHO_T}$enable_integer_datetimes" >&6
|
||||
|
||||
|
||||
# Character set recode (--enable-recode)
|
||||
#
|
||||
echo "$as_me:$LINENO: checking whether to build with recode support" >&5
|
||||
echo $ECHO_N "checking whether to build with recode support... $ECHO_C" >&6
|
||||
|
||||
|
||||
# Check whether --enable-recode or --disable-recode was given.
|
||||
if test "${enable_recode+set}" = set; then
|
||||
enableval="$enable_recode"
|
||||
|
||||
case $enableval in
|
||||
yes)
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define CYR_RECODE 1
|
||||
_ACEOF
|
||||
|
||||
;;
|
||||
no)
|
||||
:
|
||||
;;
|
||||
*)
|
||||
{ { echo "$as_me:$LINENO: error: no argument expected for --enable-recode option" >&5
|
||||
echo "$as_me: error: no argument expected for --enable-recode option" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
;;
|
||||
esac
|
||||
|
||||
else
|
||||
enable_recode=no
|
||||
|
||||
fi;
|
||||
|
||||
echo "$as_me:$LINENO: result: $enable_recode" >&5
|
||||
echo "${ECHO_T}$enable_recode" >&6
|
||||
|
||||
|
||||
#
|
||||
# NLS
|
||||
#
|
||||
|
11
configure.in
11
configure.in
@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl $Header: /cvsroot/pgsql/configure.in,v 1.273 2003/08/03 20:23:14 tgl Exp $
|
||||
dnl $Header: /cvsroot/pgsql/configure.in,v 1.274 2003/08/04 04:03:03 tgl Exp $
|
||||
dnl
|
||||
dnl Developers, please strive to achieve this order:
|
||||
dnl
|
||||
@ -153,15 +153,6 @@ PGAC_ARG_BOOL(enable, integer-datetimes, no, [ --enable-integer-datetimes enab
|
||||
AC_MSG_RESULT([$enable_integer_datetimes])
|
||||
|
||||
|
||||
# Character set recode (--enable-recode)
|
||||
#
|
||||
AC_MSG_CHECKING([whether to build with recode support])
|
||||
PGAC_ARG_BOOL(enable, recode, no, [ --enable-recode enable single-byte recode support],
|
||||
[AC_DEFINE([CYR_RECODE], 1,
|
||||
[Define to 1 if you want single-byte recode support. (--enable-recode)])])
|
||||
AC_MSG_RESULT([$enable_recode])
|
||||
|
||||
|
||||
#
|
||||
# NLS
|
||||
#
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.36 2003/05/15 15:50:18 petere Exp $ -->
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.37 2003/08/04 04:03:03 tgl Exp $ -->
|
||||
|
||||
<chapter id="charset">
|
||||
<title>Localization</>
|
||||
@ -7,7 +7,7 @@
|
||||
This chapter describes the available localization features from the
|
||||
point of view of the administrator.
|
||||
<productname>PostgreSQL</productname> supports localization with
|
||||
three approaches:
|
||||
two approaches:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@ -23,17 +23,10 @@
|
||||
Providing a number of different character sets defined in the
|
||||
<productname>PostgreSQL</productname> server, including
|
||||
multiple-byte character sets, to support storing text in all
|
||||
kinds of languages, and providing character set recoding between
|
||||
kinds of languages, and providing character set translation between
|
||||
client and server.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Single-byte character recoding provides a more light-weight
|
||||
solution for users of multiple, yet single-byte character sets.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
@ -884,75 +877,6 @@ RESET CLIENT_ENCODING;
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="recode">
|
||||
<title>Single-Byte Character Set Recoding</>
|
||||
|
||||
<para>
|
||||
You can set up this feature with the <option>--enable-recode</> option
|
||||
to <filename>configure</>. This option was formerly described as
|
||||
<quote>Cyrillic recode support</> which doesn't express all its
|
||||
power. It can be used for <emphasis>any</> single-byte character
|
||||
set recoding.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This method uses a file <filename>charset.conf</> file located in
|
||||
the data directory for configuration. It's a typical
|
||||
configuration text file where spaces and newlines separate fields
|
||||
and records and <literal>#</> starts a comment. Three key words with the
|
||||
following syntax are recognized here:
|
||||
<synopsis>
|
||||
BaseCharset <replaceable>server_charset</>
|
||||
RecodeTable <replaceable>from_charset</> <replaceable>to_charset</> <replaceable>file_name</>
|
||||
HostCharset <replaceable>host_spec</> <replaceable>host_charset</>
|
||||
</synopsis>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<token>BaseCharset</> defines the character set of the database server.
|
||||
All character set names are only used for mapping inside of
|
||||
<filename>charset.conf</> so you can freely use typing-friendly
|
||||
names.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<token>RecodeTable</> records specify conversion tables between
|
||||
server and client. The file name is relative to the
|
||||
data directory. The table file format is very
|
||||
simple. There are no key words, and character mappings are represented by a
|
||||
pair of decimal or hexadecimal (prefixed by <literal>0x</>) values on single
|
||||
lines:
|
||||
<synopsis>
|
||||
<replaceable>char_value</> <replaceable>converted_char_value</>
|
||||
</synopsis>
|
||||
In the <filename>src/data/</> directory in the source distribution you can find an
|
||||
example <filename>charset.conf</> and a few recoding tables.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<token>HostCharset</> records define the client character set by IP
|
||||
address. You can use a single IP address, an IP mask range starting
|
||||
from the given address or an IP interval (e.g., <literal>127.0.0.1</>,
|
||||
<literal>192.168.1.100/24</>, <literal>192.168.1.20-192.168.1.40</>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <filename>charset.conf</> file is always processed to the
|
||||
end, so you can easily specify exceptions from preceding rules.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
As this solution is based on the client's IP address there are
|
||||
obviously some restrictions as well. You cannot use different
|
||||
character sets on the same host at the same time. It is also
|
||||
inconvenient when you boot your client hosts into multiple
|
||||
operating systems. Nevertheless, when these restrictions are not
|
||||
limiting and you do not need multibyte characters then it is a
|
||||
simple and effective solution.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.137 2003/08/01 03:10:04 momjian Exp $ -->
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.138 2003/08/04 04:03:03 tgl Exp $ -->
|
||||
|
||||
<chapter id="installation">
|
||||
<title><![%standalone-include[<productname>PostgreSQL</>]]>
|
||||
@ -699,19 +699,6 @@ JAVACMD=$JAVA_HOME/bin/java
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--enable-recode</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enables single-byte character set recode support. See
|
||||
<![%standalone-include[the documentation]]> <![%standalone-ignore[<xref
|
||||
linkend="recode">]]> about this feature. Note that a more
|
||||
general form of character set conversion is supported in the
|
||||
default configuration; this feature is obsolete.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--enable-nls<optional>=<replaceable>LANGUAGES</replaceable></optional></option></term>
|
||||
<listitem>
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.355 2003/08/04 02:40:04 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.356 2003/08/04 04:03:06 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* this is the "main" module of the postgres backend and
|
||||
@ -2613,14 +2613,6 @@ PostgresMain(int argc, char *argv[], const char *username)
|
||||
on_shmem_exit(DumpFreeSpaceMap, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set up additional info.
|
||||
*/
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
SetCharSet();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* General initialization.
|
||||
*
|
||||
@ -2651,7 +2643,7 @@ PostgresMain(int argc, char *argv[], const char *username)
|
||||
if (!IsUnderPostmaster)
|
||||
{
|
||||
puts("\nPOSTGRES backend interactive interface ");
|
||||
puts("$Revision: 1.355 $ $Date: 2003/08/04 02:40:04 $\n");
|
||||
puts("$Revision: 1.356 $ $Date: 2003/08/04 04:03:06 $\n");
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.101 2003/08/04 02:40:06 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.102 2003/08/04 04:03:10 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -130,10 +130,6 @@ bpcharin(PG_FUNCTION_ARGS)
|
||||
for (; i < maxlen; i++)
|
||||
*r++ = ' ';
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(VARDATA(result), len, 0);
|
||||
#endif
|
||||
|
||||
PG_RETURN_BPCHAR_P(result);
|
||||
}
|
||||
|
||||
@ -154,10 +150,6 @@ bpcharout(PG_FUNCTION_ARGS)
|
||||
memcpy(result, VARDATA(s), len);
|
||||
result[len] = '\0';
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(result, len, 1);
|
||||
#endif
|
||||
|
||||
PG_RETURN_CSTRING(result);
|
||||
}
|
||||
|
||||
@ -396,10 +388,6 @@ varcharin(PG_FUNCTION_ARGS)
|
||||
VARATT_SIZEP(result) = len + VARHDRSZ;
|
||||
memcpy(VARDATA(result), s, len);
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(VARDATA(result), len, 0);
|
||||
#endif
|
||||
|
||||
PG_RETURN_VARCHAR_P(result);
|
||||
}
|
||||
|
||||
@ -420,10 +408,6 @@ varcharout(PG_FUNCTION_ARGS)
|
||||
memcpy(result, VARDATA(s), len);
|
||||
result[len] = '\0';
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(result, len, 1);
|
||||
#endif
|
||||
|
||||
PG_RETURN_CSTRING(result);
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.104 2003/08/04 02:40:06 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.105 2003/08/04 04:03:10 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -268,10 +268,6 @@ textin(PG_FUNCTION_ARGS)
|
||||
|
||||
memcpy(VARDATA(result), inputText, len);
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(VARDATA(result), len, 0);
|
||||
#endif
|
||||
|
||||
PG_RETURN_TEXT_P(result);
|
||||
}
|
||||
|
||||
@ -290,10 +286,6 @@ textout(PG_FUNCTION_ARGS)
|
||||
memcpy(result, VARDATA(t), len);
|
||||
result[len] = '\0';
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
convertstr(result, len, 1);
|
||||
#endif
|
||||
|
||||
PG_RETURN_CSTRING(result);
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.112 2003/08/04 02:40:06 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.113 2003/08/04 04:03:10 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -48,13 +48,6 @@ ProcessingMode Mode = InitProcessing;
|
||||
static char directoryLockFile[MAXPGPATH];
|
||||
static char socketLockFile[MAXPGPATH];
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
static unsigned char RecodeForwTable[128];
|
||||
static unsigned char RecodeBackTable[128];
|
||||
|
||||
static void GetCharSetByHost(char *TableName, int host, const char *DataDir);
|
||||
#endif
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* ignoring system indexes support stuff
|
||||
@ -181,295 +174,6 @@ SetDataDir(const char *dir)
|
||||
DataDir = new;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* CYR_RECODE support
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
|
||||
void
|
||||
SetCharSet(void)
|
||||
{
|
||||
FILE *file;
|
||||
char *filename;
|
||||
char *map_file;
|
||||
char buf[MAX_TOKEN];
|
||||
int i;
|
||||
unsigned char FromChar,
|
||||
ToChar;
|
||||
char ChTable[MAX_TOKEN];
|
||||
|
||||
for (i = 0; i < 128; i++)
|
||||
{
|
||||
RecodeForwTable[i] = i + 128;
|
||||
RecodeBackTable[i] = i + 128;
|
||||
}
|
||||
|
||||
if (IsUnderPostmaster)
|
||||
{
|
||||
GetCharSetByHost(ChTable, MyProcPort->raddr.in.sin_addr.s_addr, DataDir);
|
||||
filename = ChTable;
|
||||
}
|
||||
else
|
||||
filename = getenv("PG_RECODETABLE");
|
||||
|
||||
if (filename && *filename != '\0')
|
||||
{
|
||||
map_file = palloc(strlen(DataDir) + strlen(filename) + 2);
|
||||
sprintf(map_file, "%s/%s", DataDir, filename);
|
||||
file = AllocateFile(map_file, "r");
|
||||
pfree(map_file);
|
||||
if (file == NULL)
|
||||
return;
|
||||
|
||||
while (!feof(file))
|
||||
{
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
FromChar = strtoul(buf, 0, 0);
|
||||
/* Read the ToChar */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
ToChar = strtoul(buf, 0, 0);
|
||||
RecodeForwTable[FromChar - 128] = ToChar;
|
||||
RecodeBackTable[ToChar - 128] = FromChar;
|
||||
|
||||
/* read to EOL */
|
||||
while (!feof(file) && buf[0])
|
||||
{
|
||||
next_token(file, buf, sizeof(buf));
|
||||
elog(LOG, "unexpected token %s in file %s",
|
||||
buf, filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
FreeFile(file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
convertstr(unsigned char *buff, int len, int dest)
|
||||
{
|
||||
int i;
|
||||
char *ch = buff;
|
||||
|
||||
for (i = 0; i < len; i++, buff++)
|
||||
{
|
||||
if (*buff > 127)
|
||||
{
|
||||
if (dest)
|
||||
*buff = RecodeForwTable[*buff - 128];
|
||||
else
|
||||
*buff = RecodeBackTable[*buff - 128];
|
||||
}
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
|
||||
#define CHARSET_FILE "charset.conf"
|
||||
#define MAX_CHARSETS 10
|
||||
#define KEY_HOST 1
|
||||
#define KEY_BASE 2
|
||||
#define KEY_TABLE 3
|
||||
|
||||
struct CharsetItem
|
||||
{
|
||||
char Orig[MAX_TOKEN];
|
||||
char Dest[MAX_TOKEN];
|
||||
char Table[MAX_TOKEN];
|
||||
};
|
||||
|
||||
|
||||
static bool
|
||||
CharSetInRange(char *buf, int host)
|
||||
{
|
||||
int valid,
|
||||
i,
|
||||
FromAddr,
|
||||
ToAddr,
|
||||
tmp;
|
||||
struct in_addr file_ip_addr;
|
||||
char *p;
|
||||
unsigned int one = 0x80000000,
|
||||
NetMask = 0;
|
||||
unsigned char mask;
|
||||
|
||||
p = strchr(buf, '/');
|
||||
if (p)
|
||||
{
|
||||
*p++ = '\0';
|
||||
valid = inet_aton(buf, &file_ip_addr);
|
||||
if (valid)
|
||||
{
|
||||
mask = strtoul(p, 0, 0);
|
||||
FromAddr = ntohl(file_ip_addr.s_addr);
|
||||
ToAddr = ntohl(file_ip_addr.s_addr);
|
||||
for (i = 0; i < mask; i++)
|
||||
{
|
||||
NetMask |= one;
|
||||
one >>= 1;
|
||||
}
|
||||
FromAddr &= NetMask;
|
||||
ToAddr = ToAddr | ~NetMask;
|
||||
tmp = ntohl(host);
|
||||
return ((unsigned) tmp >= (unsigned) FromAddr &&
|
||||
(unsigned) tmp <= (unsigned) ToAddr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
p = strchr(buf, '-');
|
||||
if (p)
|
||||
{
|
||||
*p++ = '\0';
|
||||
valid = inet_aton(buf, &file_ip_addr);
|
||||
if (valid)
|
||||
{
|
||||
FromAddr = ntohl(file_ip_addr.s_addr);
|
||||
valid = inet_aton(p, &file_ip_addr);
|
||||
if (valid)
|
||||
{
|
||||
ToAddr = ntohl(file_ip_addr.s_addr);
|
||||
tmp = ntohl(host);
|
||||
return ((unsigned) tmp >= (unsigned) FromAddr &&
|
||||
(unsigned) tmp <= (unsigned) ToAddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
valid = inet_aton(buf, &file_ip_addr);
|
||||
if (valid)
|
||||
{
|
||||
FromAddr = file_ip_addr.s_addr;
|
||||
return (unsigned) FromAddr == (unsigned) host;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
GetCharSetByHost(char *TableName, int host, const char *DataDir)
|
||||
{
|
||||
FILE *file;
|
||||
char buf[MAX_TOKEN],
|
||||
BaseCharset[MAX_TOKEN],
|
||||
OrigCharset[MAX_TOKEN],
|
||||
DestCharset[MAX_TOKEN],
|
||||
HostCharset[MAX_TOKEN],
|
||||
*map_file;
|
||||
int key,
|
||||
ChIndex = 0,
|
||||
i,
|
||||
bufsize;
|
||||
struct CharsetItem *ChArray[MAX_CHARSETS];
|
||||
|
||||
*TableName = '\0';
|
||||
bufsize = (strlen(DataDir) + strlen(CHARSET_FILE) + 2) * sizeof(char);
|
||||
map_file = (char *) palloc(bufsize);
|
||||
snprintf(map_file, bufsize, "%s/%s", DataDir, CHARSET_FILE);
|
||||
file = AllocateFile(map_file, "r");
|
||||
pfree(map_file);
|
||||
if (file == NULL)
|
||||
{
|
||||
/* XXX should we log a complaint? */
|
||||
return;
|
||||
}
|
||||
|
||||
while (!feof(file))
|
||||
{
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
key = 0;
|
||||
if (strcasecmp(buf, "HostCharset") == 0)
|
||||
key = KEY_HOST;
|
||||
else if (strcasecmp(buf, "BaseCharset") == 0)
|
||||
key = KEY_BASE;
|
||||
else if (strcasecmp(buf, "RecodeTable") == 0)
|
||||
key = KEY_TABLE;
|
||||
else
|
||||
elog(LOG, "unrecognized tag %s in file %s",
|
||||
buf, CHARSET_FILE);
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case KEY_HOST:
|
||||
/* Read the host */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
if (CharSetInRange(buf, host))
|
||||
{
|
||||
/* Read the charset */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
strcpy(HostCharset, buf);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_BASE:
|
||||
/* Read the base charset */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
strcpy(BaseCharset, buf);
|
||||
break;
|
||||
case KEY_TABLE:
|
||||
/* Read the original charset */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
strcpy(OrigCharset, buf);
|
||||
/* Read the destination charset */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
strcpy(DestCharset, buf);
|
||||
/* Read the table filename */
|
||||
next_token(file, buf, sizeof(buf));
|
||||
if (buf[0] != '\0')
|
||||
{
|
||||
ChArray[ChIndex] =
|
||||
(struct CharsetItem *) palloc(sizeof(struct CharsetItem));
|
||||
strcpy(ChArray[ChIndex]->Orig, OrigCharset);
|
||||
strcpy(ChArray[ChIndex]->Dest, DestCharset);
|
||||
strcpy(ChArray[ChIndex]->Table, buf);
|
||||
ChIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* read to EOL */
|
||||
while (!feof(file) && buf[0])
|
||||
{
|
||||
next_token(file, buf, sizeof(buf));
|
||||
elog(LOG, "unrecognized tag %s in file %s",
|
||||
buf, CHARSET_FILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
FreeFile(file);
|
||||
|
||||
for (i = 0; i < ChIndex; i++)
|
||||
{
|
||||
if (strcasecmp(BaseCharset, ChArray[i]->Orig) == 0 &&
|
||||
strcasecmp(HostCharset, ChArray[i]->Dest) == 0)
|
||||
strncpy(TableName, ChArray[i]->Table, 79);
|
||||
pfree(ChArray[i]);
|
||||
}
|
||||
}
|
||||
#endif /* CYR_RECODE */
|
||||
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* User ID things
|
||||
|
@ -1,40 +0,0 @@
|
||||
#
|
||||
# Example PostgreSQL charsets control file.
|
||||
#
|
||||
# Should be placed in $PG_DATA directory.
|
||||
#
|
||||
# On the fly recoding charsets, based on client's IP address.
|
||||
# For example: koi8-u (koi) <-> cp1251 (win) <-> cp866 (alt)
|
||||
#
|
||||
|
||||
# Base charset for backend
|
||||
# Most Unices use koi8-r(u) as base charset. But Solaris
|
||||
# use iso8859-5 and some networkless workstations use cp866.
|
||||
BaseCharset koi
|
||||
|
||||
# There are recode table definitions from base charset to
|
||||
# other. Table names are relative to $PG_DATA directory.
|
||||
# Tables are taken from Russian Apache <http://apache.lexa.ru>.
|
||||
RecodeTable koi alt koi-alt.tab
|
||||
RecodeTable koi win koi-win.tab
|
||||
RecodeTable koi iso koi-iso.tab
|
||||
RecodeTable koi koi koi-koi.tab
|
||||
RecodeTable alt win othertabs/alt-win.tab
|
||||
RecodeTable alt koi othertabs/alt-koi.tab
|
||||
RecodeTable iso koi othertabs/iso-koi.tab
|
||||
|
||||
# Local loopback
|
||||
HostCharset 127.0.0.1 koi
|
||||
|
||||
# Yet another Unix (maybe ;)
|
||||
HostCharset 192.168.0.1 koi
|
||||
|
||||
# There are Windows on 192.168.1.64 through 192.168.1.95
|
||||
HostCharset 192.168.1.64/27 win
|
||||
|
||||
# There are cp866 (alt) systems on 192.168.2.3 through
|
||||
# 192.168.2.7 (exept 192.168.2.4 - see below)
|
||||
HostCharset 192.168.2.3-192.168.2.7 alt
|
||||
|
||||
# This is exeption from previous rule!
|
||||
HostCharset 192.168.2.4 win
|
@ -1,12 +0,0 @@
|
||||
#
|
||||
# Czech ISO-8859-2 -> WIN-1250 translation table
|
||||
#
|
||||
165 188
|
||||
169 138
|
||||
171 141
|
||||
174 142
|
||||
181 190
|
||||
185 154
|
||||
187 157
|
||||
190 158
|
||||
|
@ -1,85 +0,0 @@
|
||||
# Line with '#' at the begin is comment
|
||||
# table file may contain number of line as you wana
|
||||
# first - code of symbol, second translate code of symbol
|
||||
# codes may be in two forms: decimal and hex
|
||||
# examples:
|
||||
# 192 225
|
||||
# 0x81 226
|
||||
# 226 0x81
|
||||
# 0x90 0xfe
|
||||
# patch for Russia by Dm.Kryukov (dvk@stack.serpukhov.su)
|
||||
#
|
||||
163 241
|
||||
164 243
|
||||
166 249
|
||||
167 245
|
||||
173 173
|
||||
179 240
|
||||
180 242
|
||||
182 248
|
||||
183 244
|
||||
189 189
|
||||
192 238
|
||||
193 160
|
||||
194 161
|
||||
195 230
|
||||
196 164
|
||||
197 165
|
||||
198 228
|
||||
199 163
|
||||
200 229
|
||||
201 168
|
||||
202 169
|
||||
203 170
|
||||
204 171
|
||||
205 172
|
||||
206 173
|
||||
207 174
|
||||
208 175
|
||||
209 239
|
||||
210 224
|
||||
211 225
|
||||
212 226
|
||||
213 227
|
||||
214 166
|
||||
215 162
|
||||
216 236
|
||||
217 235
|
||||
218 167
|
||||
219 232
|
||||
220 237
|
||||
221 233
|
||||
222 231
|
||||
223 234
|
||||
224 158
|
||||
225 128
|
||||
226 129
|
||||
227 150
|
||||
228 132
|
||||
229 133
|
||||
230 148
|
||||
231 131
|
||||
232 149
|
||||
233 136
|
||||
234 137
|
||||
235 138
|
||||
236 139
|
||||
237 140
|
||||
238 141
|
||||
239 142
|
||||
240 143
|
||||
241 159
|
||||
242 144
|
||||
243 145
|
||||
244 146
|
||||
245 147
|
||||
246 134
|
||||
247 130
|
||||
248 156
|
||||
249 155
|
||||
250 135
|
||||
251 152
|
||||
252 157
|
||||
253 153
|
||||
254 151
|
||||
255 154
|
@ -1,75 +0,0 @@
|
||||
# Line with '#' at the begin is comment
|
||||
# table file may contain number of line as you wana
|
||||
# first - code of symbol, second translate code of symbol
|
||||
# codes may be in two forms: decimal and hex
|
||||
# examples:
|
||||
# 192 225
|
||||
# 0x81 226
|
||||
# 226 0x81
|
||||
# 0x90 0xfe
|
||||
# patch for Russia by Dm.Kryukov (dvk@stack.serpukhov.su)
|
||||
#
|
||||
192 0xee
|
||||
193 0xd0
|
||||
194 0xd1
|
||||
195 0xe6
|
||||
196 0xd4
|
||||
197 0xd5
|
||||
198 0xe4
|
||||
199 0xd3
|
||||
200 0xe5
|
||||
201 0xd8
|
||||
202 0xd9
|
||||
203 0xda
|
||||
204 0xdb
|
||||
205 0xdc
|
||||
206 0xdd
|
||||
207 0xde
|
||||
208 0xdf
|
||||
209 0xef
|
||||
210 0xe0
|
||||
211 0xe1
|
||||
212 0xe2
|
||||
213 0xe3
|
||||
214 0xd6
|
||||
215 0xd2
|
||||
216 0xec
|
||||
217 0xeb
|
||||
218 0xd7
|
||||
219 0xe8
|
||||
220 0xed
|
||||
221 0xe9
|
||||
222 0xe7
|
||||
223 0xea
|
||||
224 0xce
|
||||
225 0xb0
|
||||
226 0xb1
|
||||
227 0xc6
|
||||
228 0xb4
|
||||
229 0xb5
|
||||
230 0xc4
|
||||
231 0xb3
|
||||
232 0xc5
|
||||
233 0xb8
|
||||
234 0xb9
|
||||
235 0xba
|
||||
236 0xbb
|
||||
237 0xbc
|
||||
238 0xbd
|
||||
239 0xbe
|
||||
240 0xbf
|
||||
241 0xcf
|
||||
242 0xc0
|
||||
243 0xc1
|
||||
244 0xc2
|
||||
245 0xc3
|
||||
246 0xb6
|
||||
247 0xb2
|
||||
248 0xcc
|
||||
249 0xcb
|
||||
250 0xb7
|
||||
251 0xc8
|
||||
252 0xcd
|
||||
253 0xc9
|
||||
254 0xc7
|
||||
255 0xca
|
@ -1,2 +0,0 @@
|
||||
# Hmm ...
|
||||
#
|
@ -1,130 +0,0 @@
|
||||
# Hmm ...
|
||||
#
|
||||
128 0xc0
|
||||
129 0xc1
|
||||
130 0xc2
|
||||
131 0xc3
|
||||
132 0xc4
|
||||
133 0xc5
|
||||
134 0xc6
|
||||
135 0xc7
|
||||
136 0xc8
|
||||
137 0xc9
|
||||
138 0xca
|
||||
139 0xcb
|
||||
140 0xcc
|
||||
141 0xcd
|
||||
142 0xce
|
||||
143 0xcf
|
||||
144 0xd0
|
||||
145 0xd1
|
||||
146 0xd2
|
||||
147 0xd3
|
||||
148 0xd4
|
||||
149 0xd5
|
||||
150 0xd6
|
||||
151 0xd7
|
||||
152 0xd8
|
||||
153 0xd9
|
||||
154 0xda
|
||||
155 0xdb
|
||||
156 0xdc
|
||||
157 0xdd
|
||||
158 0xde
|
||||
159 0xdf
|
||||
160 0xa0
|
||||
161 0xa1
|
||||
162 0xa2
|
||||
163 0xa3
|
||||
164 0xa4
|
||||
165 0xa5
|
||||
166 0xa6
|
||||
167 0xa7
|
||||
168 0xa8
|
||||
169 0xa9
|
||||
170 0xaa
|
||||
171 0xab
|
||||
172 0xac
|
||||
173 0xad
|
||||
174 0xae
|
||||
175 0xaf
|
||||
176 0xb0
|
||||
177 0xb1
|
||||
178 0xb2
|
||||
179 0xb3
|
||||
180 0xb4
|
||||
181 0xb5
|
||||
182 0xb6
|
||||
183 0xb7
|
||||
184 0xb8
|
||||
185 0xb9
|
||||
186 0xba
|
||||
187 0xbb
|
||||
188 0xbc
|
||||
189 0xbd
|
||||
190 0xbe
|
||||
191 0xbf
|
||||
192 0xfe
|
||||
193 0xe0
|
||||
194 0xe1
|
||||
195 0xf6
|
||||
196 0xe4
|
||||
197 0xe5
|
||||
198 0xf4
|
||||
199 0xe3
|
||||
200 0xf5
|
||||
201 0xe8
|
||||
202 0xe9
|
||||
203 0xea
|
||||
204 0xeb
|
||||
205 0xec
|
||||
206 0xed
|
||||
207 0xee
|
||||
208 0xef
|
||||
209 0xdf
|
||||
210 0xf0
|
||||
211 0xf1
|
||||
212 0xf2
|
||||
213 0xf3
|
||||
214 0xe6
|
||||
215 0xe2
|
||||
216 0xfc
|
||||
217 0xfb
|
||||
218 0xe7
|
||||
219 0xf8
|
||||
220 0xfd
|
||||
221 0xf9
|
||||
222 0xf7
|
||||
223 0xfa
|
||||
224 0x9e
|
||||
225 0x80
|
||||
226 0x81
|
||||
227 0x96
|
||||
228 0x84
|
||||
229 0x85
|
||||
230 0x94
|
||||
231 0x83
|
||||
232 0x95
|
||||
233 0x88
|
||||
234 0x89
|
||||
235 0x8a
|
||||
236 0x8b
|
||||
237 0x8c
|
||||
238 0x8d
|
||||
239 0x8e
|
||||
240 0x8f
|
||||
241 0x9f
|
||||
242 0x90
|
||||
243 0x91
|
||||
244 0x92
|
||||
245 0x93
|
||||
246 0x86
|
||||
247 0x82
|
||||
248 0x9c
|
||||
249 0x9b
|
||||
250 0x87
|
||||
251 0x98
|
||||
252 0x9d
|
||||
253 0x99
|
||||
254 0x97
|
||||
255 0x9a
|
@ -1,85 +0,0 @@
|
||||
# Line with '#' at the begin is comment
|
||||
# table file may contain number of line as you wana
|
||||
# first - code of symbol, second translate code of symbol
|
||||
# codes may be in two forms: decimal and hex
|
||||
# examples:
|
||||
# 192 225
|
||||
# 0x81 226
|
||||
# 226 0x81
|
||||
# 0x90 0xfe
|
||||
# patch for Russia by Dm.Kryukov (dvk@stack.serpukhov.su)
|
||||
#
|
||||
163 184
|
||||
164 186
|
||||
166 179
|
||||
167 191
|
||||
173 180
|
||||
179 168
|
||||
180 170
|
||||
182 178
|
||||
183 175
|
||||
189 165
|
||||
192 254
|
||||
193 224
|
||||
194 225
|
||||
195 246
|
||||
196 228
|
||||
197 229
|
||||
198 244
|
||||
199 227
|
||||
200 245
|
||||
201 232
|
||||
202 233
|
||||
203 234
|
||||
204 235
|
||||
205 236
|
||||
206 237
|
||||
207 238
|
||||
208 239
|
||||
209 255
|
||||
210 240
|
||||
211 241
|
||||
212 242
|
||||
213 243
|
||||
214 230
|
||||
215 226
|
||||
216 252
|
||||
217 251
|
||||
218 231
|
||||
219 248
|
||||
220 253
|
||||
221 249
|
||||
222 247
|
||||
223 250
|
||||
224 222
|
||||
225 192
|
||||
226 193
|
||||
227 214
|
||||
228 196
|
||||
229 197
|
||||
230 212
|
||||
231 195
|
||||
232 213
|
||||
233 200
|
||||
234 201
|
||||
235 202
|
||||
236 203
|
||||
237 204
|
||||
238 205
|
||||
239 206
|
||||
240 207
|
||||
241 223
|
||||
242 208
|
||||
243 209
|
||||
244 210
|
||||
245 211
|
||||
246 198
|
||||
247 194
|
||||
248 220
|
||||
249 219
|
||||
250 199
|
||||
251 216
|
||||
252 221
|
||||
253 217
|
||||
254 215
|
||||
255 218
|
@ -12,7 +12,7 @@
|
||||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: miscadmin.h,v 1.131 2003/08/04 02:40:10 momjian Exp $
|
||||
* $Id: miscadmin.h,v 1.132 2003/08/04 04:03:10 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* some of the information in this file should be moved to
|
||||
@ -238,11 +238,6 @@ extern int FindExec(char *full_path, const char *argv0,
|
||||
const char *binary_name);
|
||||
extern int CheckPathAccess(char *path, char *name, int open_mode);
|
||||
|
||||
#ifdef CYR_RECODE
|
||||
extern void SetCharSet(void);
|
||||
extern char *convertstr(unsigned char *buff, int len, int dest);
|
||||
#endif
|
||||
|
||||
/* in utils/misc/superuser.c */
|
||||
extern bool superuser(void); /* current user is superuser */
|
||||
extern bool superuser_arg(AclId userid); /* given user is superuser */
|
||||
|
@ -24,9 +24,6 @@
|
||||
/* The alignment requirement of a `short'. */
|
||||
#undef ALIGNOF_SHORT
|
||||
|
||||
/* Define to 1 if you want single-byte recode support. (--enable-recode) */
|
||||
#undef CYR_RECODE
|
||||
|
||||
/* Define to the default TCP port number on which the server listens and to
|
||||
which clients will try to connect to. This can be overridden at run-time,
|
||||
but it's convenient if your clients have the right default compiled in.
|
||||
@ -604,7 +601,7 @@
|
||||
#undef USE_SYSV_SHARED_MEMORY
|
||||
|
||||
/* Define to 1 to build libpq and ecpg to be thread-safe.
|
||||
(--enable-thread-safeness) */
|
||||
(--enable-thread-safety) */
|
||||
#undef USE_THREADS
|
||||
|
||||
/* Define to select unnamed POSIX semaphores. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user