aboutsummaryrefslogtreecommitdiff
path: root/src/base/string
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/string')
-rw-r--r--src/base/string/append.c4
-rw-r--r--src/base/string/equals.c2
-rw-r--r--src/base/string/grow.c2
-rw-r--r--src/base/string/lower.c2
-rw-r--r--src/base/string/make.c10
-rw-r--r--src/base/string/raw/erfindc.c17
-rw-r--r--src/base/string/raw/nrfindc.c15
-rw-r--r--src/base/string/raw/rfindc.c15
-rw-r--r--src/base/string/read.c2
-rw-r--r--src/base/string/replace.c4
-rw-r--r--src/base/string/split.c2
-rw-r--r--src/base/string/upper.c4
12 files changed, 63 insertions, 16 deletions
diff --git a/src/base/string/append.c b/src/base/string/append.c
index 60e1b48..7522f81 100644
--- a/src/base/string/append.c
+++ b/src/base/string/append.c
@@ -18,7 +18,7 @@ string·appendlen(string *s, vlong n, byte* b)
Hdr* h = (Hdr*)(*s - sizeof(Hdr));
- memcpy(*s + string·len(*s), b, n);
+ mem·copy(*s + string·len(*s), n, b);
h->len += n;
(*s)[h->len] = '\0';
@@ -30,7 +30,7 @@ string·appendlen(string *s, vlong n, byte* b)
int
string·append(string *s, byte* b)
{
- return string·appendlen(s, strlen(b), b);
+ return string·appendlen(s, str·len(b), b);
}
// appendbyte will append the given byte to our string.
diff --git a/src/base/string/equals.c b/src/base/string/equals.c
index 3637d67..ba7fd3b 100644
--- a/src/base/string/equals.c
+++ b/src/base/string/equals.c
@@ -10,5 +10,5 @@ string·equals(string s, string t)
if(sL != tL)
return false;
- return memcmp(s, t, sL) == 0;
+ return mem·compare(s, sL, t) == 0;
}
diff --git a/src/base/string/grow.c b/src/base/string/grow.c
index 6abe4cc..dd6b008 100644
--- a/src/base/string/grow.c
+++ b/src/base/string/grow.c
@@ -25,7 +25,7 @@ string·grow(string *s, vlong delta)
newh = (Hdr*)realloc(h, sizeof(*h) + newCap + 1);
if (newh == nil) return;
- memset(newh->buf + len, '\0', newCap - len);
+ mem·set(newh->buf + len, newCap - len, '\0');
newh->cap = newCap;
newh->len = len;
diff --git a/src/base/string/lower.c b/src/base/string/lower.c
index 00556d6..c094a5a 100644
--- a/src/base/string/lower.c
+++ b/src/base/string/lower.c
@@ -8,5 +8,5 @@ string·lower(string s)
b = s;
e = b + string·len(s);
while (b++ != e)
- *b = tolower(*b);
+ *b = utf8·tolower(*b);
}
diff --git a/src/base/string/make.c b/src/base/string/make.c
index d1e594a..50b8b98 100644
--- a/src/base/string/make.c
+++ b/src/base/string/make.c
@@ -9,7 +9,7 @@ string·makecap(byte *s, vlong len, vlong cap)
struct Hdr* h;
h = malloc(sizeof(*h) + cap + 1);
- if(s == nil) memset(h, 0, sizeof(*h));
+ if(s == nil) mem·set(h, sizeof(*h), 0);
if(h == nil) return nil; // Allocation failed.
@@ -19,8 +19,8 @@ string·makecap(byte *s, vlong len, vlong cap)
if(cap < h->len) goto cleanup;
if(s != nil && cap > 0){
- memcpy(h->buf, s, h->len);
- memset(h->buf + h->len, '\0', h->cap - h->len + 1);
+ mem·copy(h->buf, h->len, s);
+ mem·set(h->buf + h->len, h->cap - h->len + 1, '\0');
}
return h->buf;
@@ -36,7 +36,7 @@ cleanup:
string
string·makelen(byte *s, vlong len)
{
- vlong sl = (!s) ? 0 : strlen(s);
+ vlong sl = (!s) ? 0 : str·len(s);
if(sl < len) panicf("attempted to take a bigger substring than string length");
vlong cap = (len == 0) ? 1 : len;
@@ -48,6 +48,6 @@ string·makelen(byte *s, vlong len)
string
string·make(byte *s)
{
- vlong len = (!s) ? 0 : strlen(s);
+ vlong len = (!s) ? 0 : str·len(s);
return string·makelen(s, len);
}
diff --git a/src/base/string/raw/erfindc.c b/src/base/string/raw/erfindc.c
new file mode 100644
index 0000000..be04cde
--- /dev/null
+++ b/src/base/string/raw/erfindc.c
@@ -0,0 +1,17 @@
+#include <u.h>
+#include <base.h>
+
+char*
+str·erfindc(char *s, char *e, int c)
+{
+ int n;
+ if(e < s)
+ return nil;
+
+ n = e-s;
+ c = (uchar)c;
+ while(n--)
+ if(s[n]==c)
+ return s+n;
+ return nil;
+}
diff --git a/src/base/string/raw/nrfindc.c b/src/base/string/raw/nrfindc.c
new file mode 100644
index 0000000..66c0bee
--- /dev/null
+++ b/src/base/string/raw/nrfindc.c
@@ -0,0 +1,15 @@
+#include <u.h>
+#include <base.h>
+
+char*
+str·nrfindc(char *s, intptr n, int c)
+{
+ if(n < 0)
+ return nil;
+
+ c = (uchar)c;
+ while(n--)
+ if(s[n]==c)
+ return s+n;
+ return nil;
+}
diff --git a/src/base/string/raw/rfindc.c b/src/base/string/raw/rfindc.c
new file mode 100644
index 0000000..252be67
--- /dev/null
+++ b/src/base/string/raw/rfindc.c
@@ -0,0 +1,15 @@
+#include <u.h>
+#include <base.h>
+
+char*
+str·rfindc(char *s, int c)
+{
+ int n;
+
+ n = str·len(s);
+ c = (uchar)c;
+ while(n--)
+ if(s[n]==c)
+ return s+n;
+ return nil;
+}
diff --git a/src/base/string/read.c b/src/base/string/read.c
index f753e24..3bc4f74 100644
--- a/src/base/string/read.c
+++ b/src/base/string/read.c
@@ -6,7 +6,7 @@ string·read(string s, int size, int n, void *buf)
int len;
len = MIN(n * size, string·len(s));
- memcpy(buf, s, len);
+ mem·copy(buf, len, s);
return len;
}
diff --git a/src/base/string/replace.c b/src/base/string/replace.c
index 979c385..de3d397 100644
--- a/src/base/string/replace.c
+++ b/src/base/string/replace.c
@@ -6,8 +6,8 @@
void
string·replace(string s, byte* from, byte* to)
{
- vlong fromL = strlen(from);
- vlong toL = strlen(to);
+ vlong fromL = str·len(from);
+ vlong toL = str·len(to);
if (toL != fromL) { panicf("different sized replacement string not supported"); }
vlong l = string·len(s);
diff --git a/src/base/string/split.c b/src/base/string/split.c
index 6b0a9fd..56029e1 100644
--- a/src/base/string/split.c
+++ b/src/base/string/split.c
@@ -17,7 +17,7 @@ string·split(string s, byte* tok)
mem·buffit(fields, 5);
for(vlong i = 0; i < sL - tokL; i++){
- if((tokL == 1 && s[i] == tokL) || !memcmp(s + i, tok, tokL)){
+ if((tokL == 1 && s[i] == tokL) || !mem·compare(s + i, tokL, tok)){
mem·bufpush(fields, string·makelen(s + start, i - start));
if(fields[mem·buflen(fields) - 1] == nil) goto cleanup;
diff --git a/src/base/string/upper.c b/src/base/string/upper.c
index 2110974..1158a55 100644
--- a/src/base/string/upper.c
+++ b/src/base/string/upper.c
@@ -7,6 +7,6 @@ string·upper(string s)
byte *b, *e;
b = s;
e = b + string·len(s);
- while (b++ != e)
- *b = toupper(*b);
+ while (b++ != e)
+ *b = utf8·toupper(*b);
}