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)