From 0227a4e1141ae83ac3ae145fa283ede13e86e23e Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Tue, 24 Feb 1998 15:27:04 +0000 Subject: From: "Denis V. Dmitrienko" What it does: It solves stupid problem with cyrillic charsets IP-based on-fly recoding. take a look at /data/charset.conf for details. You can use any tables for any charset. Tables are from Russian Apache project. Tables in this patch contains also Ukrainian characters. Then run ./configure --enable-recode --- src/backend/utils/adt/varchar.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/backend/utils/adt/varchar.c') diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index a7b6abdaeb1..f3a2df7b94d 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.27 1998/02/10 16:03:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.28 1998/02/24 15:19:44 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -16,6 +16,10 @@ #include "postgres.h" #include "utils/builtins.h" +#ifdef CYR_RECODE +char *convertstr(char *,int,int); +#endif + /* * CHAR() and VARCHAR() types are part of the ANSI SQL standard. CHAR() * is for blank-padded string whose length is specified in CREATE TABLE. @@ -84,6 +88,11 @@ bpcharin(char *s, int dummy, int16 atttypmod) if (*r == '\0') break; } + +#ifdef CYR_RECODE + convertstr(result + VARHDRSZ,len,0); +#endif + /* blank pad the string if necessary */ for (; i < len; i++) { @@ -110,6 +119,11 @@ bpcharout(char *s) result = (char *) palloc(len + 1); StrNCpy(result, VARDATA(s), len+1); /* these are blank-padded */ } + +#ifdef CYR_RECODE + convertstr(result,len,1); +#endif + return (result); } @@ -143,6 +157,10 @@ varcharin(char *s, int dummy, int16 atttypmod) VARSIZE(result) = len; strncpy(VARDATA(result), s, len - VARHDRSZ); +#ifdef CYR_RECODE + convertstr(result + VARHDRSZ,len,0); +#endif + return (result); } @@ -164,6 +182,11 @@ varcharout(char *s) result = (char *) palloc(len + 1); StrNCpy(result, VARDATA(s), len+1); } + +#ifdef CYR_RECODE + convertstr(result,len,1); +#endif + return (result); } -- cgit v1.2.3