PostgreSQL Source Code: src/common/string.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef FRONTEND
20#else
22#endif
23
25
26
27
28
29
30bool
32{
33 size_t slen = strlen(str);
34 size_t elen = strlen(end);
35
36
37 if (elen > slen)
38 return false;
39
40
41 str += slen - elen;
42 return strcmp(str, end) == 0;
43}
44
45
46
47
48
49int
50strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base)
51{
53
54 val = strtol(str, endptr, base);
56 errno = ERANGE;
57 return (int) val;
58}
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84char *
86{
87 size_t dstlen;
88 char *dst;
89 const char *p;
90 size_t i = 0;
91
92
93 dstlen = strlen(str) * 4 + 1;
94
95#ifdef FRONTEND
97#else
99#endif
100
101 if (!dst)
102 return NULL;
103
104 for (p = str; *p != '\0'; p++)
105 {
106
107
108 if (*p < 32 || *p > 126)
109 {
111 snprintf(&dst[i], dstlen - i, "\\x%02x", (unsigned char) *p);
112 i += 4;
113 }
114 else
115 {
117 dst[i] = *p;
118 i++;
119 }
120 }
121
123 dst[i] = '\0';
124 return dst;
125}
126
127
128
129
130
131bool
133{
134 while (*str)
135 {
137 return false;
139 }
140 return true;
141}
142
143
144
145
146
147
148
149
150
151
152
153int
155{
157
158 while (len > 0 && (str[len - 1] == '\n' ||
161
162 return len;
163}
#define IS_HIGHBIT_SET(ch)
Assert(PointerIsAligned(start, uint64))
void * palloc_extended(Size size, int flags)
char * pg_clean_ascii(const char *str, int alloc_flags)
int pg_strip_crlf(char *str)
bool pg_is_ascii(const char *str)
int strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base)
bool pg_str_endswith(const char *str, const char *end)