ucx/string.c

changeset 39
3e55bed345f9
parent 17
11dffb40cd91
child 43
03076907b58a
--- 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);
 }

mercurial