summaryrefslogtreecommitdiff
path: root/newlib/libc/string/strpbrk.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/string/strpbrk.c')
-rw-r--r--newlib/libc/string/strpbrk.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/newlib/libc/string/strpbrk.c b/newlib/libc/string/strpbrk.c
new file mode 100644
index 00000000000..e7f2dd2b6ee
--- /dev/null
+++ b/newlib/libc/string/strpbrk.c
@@ -0,0 +1,58 @@
+/*
+FUNCTION
+ <<strpbrk>>---find chars in string
+
+INDEX
+ strpbrk
+
+ANSI_SYNOPSIS
+ #include <string.h>
+ char *strpbrk(const char *<[s1]>, const char *<[s2]>);
+
+TRAD_SYNOPSIS
+ #include <string.h>
+ char *strpbrk(<[s1]>, <[s2]>)
+ char *<[s1]>;
+ char *<[s2]>;
+
+DESCRIPTION
+ This function locates the first occurence in the string
+ pointed to by <[s1]> of any character in string pointed to by
+ <[s2]> (excluding the terminating null character).
+
+RETURNS
+ <<strpbrk>> returns a pointer to the character found in <[s1]>, or a
+ null pointer if no character from <[s2]> occurs in <[s1]>.
+
+PORTABILITY
+<<strpbrk>> requires no supporting OS subroutines.
+*/
+
+#include <string.h>
+
+char *
+_DEFUN (strpbrk, (s1, s2),
+ _CONST char *s1 _AND
+ _CONST char *s2)
+{
+ _CONST char *c = s2;
+ if (!*s1)
+ return (char *) NULL;
+
+ while (*s1)
+ {
+ for (c = s2; *c; c++)
+ {
+ if (*s1 == *c)
+ break;
+ }
+ if (*c)
+ break;
+ s1++;
+ }
+
+ if (*c == '\0')
+ s1 = NULL;
+
+ return (char *) s1;
+}