1/*-------------------------------------------------------------------------
2 *
3 * ASCII and MULE_INTERNAL
4 *
5 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
6 * Portions Copyright (c) 1994, Regents of the University of California
7 *
8 * IDENTIFICATION
9 * src/backend/utils/mb/conversion_procs/ascii_and_mic/ascii_and_mic.c
10 *
11 *-------------------------------------------------------------------------
12 */
13
14#include "postgres.h"
15#include "fmgr.h"
16#include "mb/pg_wchar.h"
17
18PG_MODULE_MAGIC;
19
20PG_FUNCTION_INFO_V1(ascii_to_mic);
21PG_FUNCTION_INFO_V1(mic_to_ascii);
22
23/* ----------
24 * conv_proc(
25 * INTEGER, -- source encoding id
26 * INTEGER, -- destination encoding id
27 * CSTRING, -- source string (null terminated C string)
28 * CSTRING, -- destination string (null terminated C string)
29 * INTEGER -- source string length
30 * ) returns VOID;
31 * ----------
32 */
33
34Datum
35ascii_to_mic(PG_FUNCTION_ARGS)
36{
37 unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
38 unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
39 int len = PG_GETARG_INT32(4);
40
41 CHECK_ENCODING_CONVERSION_ARGS(PG_SQL_ASCII, PG_MULE_INTERNAL);
42
43 pg_ascii2mic(src, dest, len);
44
45 PG_RETURN_VOID();
46}
47
48Datum
49mic_to_ascii(PG_FUNCTION_ARGS)
50{
51 unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2);
52 unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
53 int len = PG_GETARG_INT32(4);
54
55 CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_SQL_ASCII);
56
57 pg_mic2ascii(src, dest, len);
58
59 PG_RETURN_VOID();
60}
61