--- a/ucx/string.c Tue Sep 03 12:08:35 2013 +0200 +++ b/ucx/string.c Sat Sep 07 14:08:43 2013 +0200 @@ -119,6 +119,20 @@ return n; } +sstr_t sstrrchr(sstr_t s, int c) { + if (s.length > 0) { + for(size_t i=s.length;i>0;i--) { + if(s.ptr[i-1] == c) { + return sstrsubs(s, i-1); + } + } + } + sstr_t n; + n.ptr = NULL; + n.length = 0; + return n; +} + sstr_t* sstrsplit(sstr_t s, sstr_t d, size_t *n) { return sstrsplit_a(ucx_default_allocator(), s, d, n); } @@ -197,6 +211,20 @@ } } +int sstrcasecmp(sstr_t s1, sstr_t s2) { + if (s1.length == s2.length) { +#ifdef _WIN32 + return _strnicmp(s1.ptr, s2.ptr, s1.length); +#else + return strncasecmp(s1.ptr, s2.ptr, s1.length); +#endif + } else if (s1.length > s2.length) { + return 1; + } else { + return -1; + } +} + sstr_t sstrdup(sstr_t s) { return sstrdup_a(ucx_default_allocator(), s); }