ucx/string.c

changeset 39
3e55bed345f9
parent 17
11dffb40cd91
child 43
03076907b58a
equal deleted inserted replaced
38:b855f76e965b 39:3e55bed345f9
109 109
110 sstr_t sstrchr(sstr_t s, int c) { 110 sstr_t sstrchr(sstr_t s, int c) {
111 for(size_t i=0;i<s.length;i++) { 111 for(size_t i=0;i<s.length;i++) {
112 if(s.ptr[i] == c) { 112 if(s.ptr[i] == c) {
113 return sstrsubs(s, i); 113 return sstrsubs(s, i);
114 }
115 }
116 sstr_t n;
117 n.ptr = NULL;
118 n.length = 0;
119 return n;
120 }
121
122 sstr_t sstrrchr(sstr_t s, int c) {
123 if (s.length > 0) {
124 for(size_t i=s.length;i>0;i--) {
125 if(s.ptr[i-1] == c) {
126 return sstrsubs(s, i-1);
127 }
114 } 128 }
115 } 129 }
116 sstr_t n; 130 sstr_t n;
117 n.ptr = NULL; 131 n.ptr = NULL;
118 n.length = 0; 132 n.length = 0;
195 } else { 209 } else {
196 return -1; 210 return -1;
197 } 211 }
198 } 212 }
199 213
214 int sstrcasecmp(sstr_t s1, sstr_t s2) {
215 if (s1.length == s2.length) {
216 #ifdef _WIN32
217 return _strnicmp(s1.ptr, s2.ptr, s1.length);
218 #else
219 return strncasecmp(s1.ptr, s2.ptr, s1.length);
220 #endif
221 } else if (s1.length > s2.length) {
222 return 1;
223 } else {
224 return -1;
225 }
226 }
227
200 sstr_t sstrdup(sstr_t s) { 228 sstr_t sstrdup(sstr_t s) {
201 return sstrdup_a(ucx_default_allocator(), s); 229 return sstrdup_a(ucx_default_allocator(), s);
202 } 230 }
203 231
204 sstr_t sstrdup_a(UcxAllocator *allocator, sstr_t s) { 232 sstr_t sstrdup_a(UcxAllocator *allocator, sstr_t s) {

mercurial