PostgreSQL Source Code: src/backend/utils/adt/ascii.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
13
16#include "utils/fmgrprotos.h"
18
19static void pg_to_ascii(unsigned char *src, unsigned char *src_end,
20 unsigned char *dest, int enc);
22
23
24
25
26
27
28static void
29pg_to_ascii(unsigned char *src, unsigned char *src_end, unsigned char *dest, int enc)
30{
31 unsigned char *x;
32 const unsigned char *ascii;
34
35
36
37
38#define RANGE_128 128
39#define RANGE_160 160
40
42 {
43
44
45
46 ascii = (const unsigned char *) " cL Y \"Ca -R 'u ., ?AAAAAAACEEEEIIII NOOOOOxOUUUUYTBaaaaaaaceeeeiiii nooooo/ouuuuyty";
48 }
50 {
51
52
53
54 ascii = (const unsigned char *) " A L LS \"SSTZ-ZZ a,l'ls ,sstz\"zzRAAAALCCCEEEEIIDDNNOOOOxRUUUUYTBraaaalccceeeeiiddnnoooo/ruuuuyt.";
56 }
58 {
59
60
61
62 ascii = (const unsigned char *) " cL YS sCa -R Zu .z EeY?AAAAAAACEEEEIIII NOOOOOxOUUUUYTBaaaaaaaceeeeiiii nooooo/ouuuuyty";
64 }
66 {
67
68
69
70 ascii = (const unsigned char *) " ' \" %S<STZZ `'\"\".-- s>stzz L A \"CS -RZ ,l'u .,as L\"lzRAAAALCCCEEEEIIDDNNOOOOxRUUUUYTBraaaalccceeeeiiddnnoooo/ruuuuyt ";
72 }
73 else
74 {
76 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
77 errmsg("encoding conversion from %s to ASCII not supported",
79 return;
80 }
81
82
83
84
85 for (x = src; x < src_end; x++)
86 {
87 if (*x < 128)
90 *dest++ = ' ';
91 else
93 }
94}
95
96
97
98
99
100
101
102
105{
108 (unsigned char *) VARDATA(data),
109 enc);
110
112}
113
114
115
116
117
120{
124
125 if (enc < 0)
127 (errcode(ERRCODE_UNDEFINED_OBJECT),
128 errmsg("%s is not a valid encoding name", encname)));
129
131}
132
133
134
135
136
139{
142
145 (errcode(ERRCODE_UNDEFINED_OBJECT),
146 errmsg("%d is not a valid encoding code", enc)));
147
149}
150
151
152
153
154
157{
160
162}
163
164
165
166
167
168
169
170
171
172
173void
175{
176 if (destsiz == 0)
177 return;
178
179 while (--destsiz > 0)
180 {
181
182 unsigned char ch = *src++;
183
184 if (ch == '\0')
185 break;
186
187 if (32 <= ch && ch <= 127)
189
190 else if (ch == '\n' || ch == '\r' || ch == '\t')
192
193 else
196 }
197
198 *dest = '\0';
199}
void ascii_safe_strlcpy(char *dest, const char *src, size_t destsiz)
Datum to_ascii_enc(PG_FUNCTION_ARGS)
Datum to_ascii_default(PG_FUNCTION_ARGS)
Datum to_ascii_encname(PG_FUNCTION_ARGS)
static void pg_to_ascii(unsigned char *src, unsigned char *src_end, unsigned char *dest, int enc)
static text * encode_to_ascii(text *data, int enc)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define PG_GETARG_NAME(n)
#define PG_RETURN_TEXT_P(x)
#define PG_GETARG_INT32(n)
#define PG_GETARG_TEXT_P_COPY(n)
int GetDatabaseEncoding(void)
Datum ascii(PG_FUNCTION_ARGS)
#define PG_VALID_ENCODING(_enc)
#define pg_encoding_to_char
#define pg_char_to_encoding
static struct cvec * range(struct vars *v, chr a, chr b, int cases)