#include "postgres.h"#include "fmgr.h"#include "mb/pg_wchar.h"
Go to the source code of this file.
Functions | |
| PG_FUNCTION_INFO_V1 (euc_cn_to_mic) | |
| PG_FUNCTION_INFO_V1 (mic_to_euc_cn) | |
| Datum | euc_cn_to_mic (PG_FUNCTION_ARGS) |
| Datum | mic_to_euc_cn (PG_FUNCTION_ARGS) |
| static void | euc_cn2mic (const unsigned char *euc, unsigned char *p, int len) |
| static void | mic2euc_cn (const unsigned char *mic, unsigned char *p, int len) |
Variables | |
| PG_MODULE_MAGIC | |
| static void euc_cn2mic | ( | const unsigned char * | euc, | |
| unsigned char * | p, | |||
| int | len | |||
| ) | [static] |
Definition at line 72 of file euc_cn_and_mic.c.
References IS_HIGHBIT_SET, PG_EUC_CN, and report_invalid_encoding().
Referenced by euc_cn_to_mic().
{
int c1;
while (len > 0)
{
c1 = *euc;
if (IS_HIGHBIT_SET(c1))
{
if (len < 2 || !IS_HIGHBIT_SET(euc[1]))
report_invalid_encoding(PG_EUC_CN, (const char *) euc, len);
*p++ = LC_GB2312_80;
*p++ = c1;
*p++ = euc[1];
euc += 2;
len -= 2;
}
else
{ /* should be ASCII */
if (c1 == 0)
report_invalid_encoding(PG_EUC_CN, (const char *) euc, len);
*p++ = c1;
euc++;
len--;
}
}
*p = '\0';
}
| Datum euc_cn_to_mic | ( | PG_FUNCTION_ARGS | ) |
Definition at line 41 of file euc_cn_and_mic.c.
References CHECK_ENCODING_CONVERSION_ARGS, euc_cn2mic(), PG_EUC_CN, PG_GETARG_CSTRING, PG_GETARG_INT32, PG_MULE_INTERNAL, and PG_RETURN_VOID.
{
unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
int len = PG_GETARG_INT32(4);
CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_CN, PG_MULE_INTERNAL);
euc_cn2mic(src, dest, len);
PG_RETURN_VOID();
}
| static void mic2euc_cn | ( | const unsigned char * | mic, | |
| unsigned char * | p, | |||
| int | len | |||
| ) | [static] |
Definition at line 105 of file euc_cn_and_mic.c.
References IS_HIGHBIT_SET, LC_GB2312_80, PG_EUC_CN, PG_MULE_INTERNAL, report_invalid_encoding(), and report_untranslatable_char().
Referenced by mic_to_euc_cn().
{
int c1;
while (len > 0)
{
c1 = *mic;
if (IS_HIGHBIT_SET(c1))
{
if (c1 != LC_GB2312_80)
report_untranslatable_char(PG_MULE_INTERNAL, PG_EUC_CN,
(const char *) mic, len);
if (len < 3 || !IS_HIGHBIT_SET(mic[1]) || !IS_HIGHBIT_SET(mic[2]))
report_invalid_encoding(PG_MULE_INTERNAL,
(const char *) mic, len);
mic++;
*p++ = *mic++;
*p++ = *mic++;
len -= 3;
}
else
{ /* should be ASCII */
if (c1 == 0)
report_invalid_encoding(PG_MULE_INTERNAL,
(const char *) mic, len);
*p++ = c1;
mic++;
len--;
}
}
*p = '\0';
}
| Datum mic_to_euc_cn | ( | PG_FUNCTION_ARGS | ) |
Definition at line 55 of file euc_cn_and_mic.c.
References CHECK_ENCODING_CONVERSION_ARGS, mic2euc_cn(), PG_EUC_CN, PG_GETARG_CSTRING, PG_GETARG_INT32, PG_MULE_INTERNAL, and PG_RETURN_VOID.
{
unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
int len = PG_GETARG_INT32(4);
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_EUC_CN);
mic2euc_cn(src, dest, len);
PG_RETURN_VOID();
}
| PG_FUNCTION_INFO_V1 | ( | euc_cn_to_mic | ) |
| PG_FUNCTION_INFO_V1 | ( | mic_to_euc_cn | ) |
Definition at line 18 of file euc_cn_and_mic.c.
1.7.1