aboutsummaryrefslogtreecommitdiff
path: root/src/base/string/raw
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/string/raw')
-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
3 files changed, 47 insertions, 0 deletions
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;
+}