Skip to content
Snippets Groups Projects
Commit c8effff9 authored by Dave Hylands's avatar Dave Hylands
Browse files

Added public domain implementations of strchr and strstr.

parent 34f813ee
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <sys/types.h>
#include "nlr.h" #include "nlr.h"
#include "misc.h" #include "misc.h"
......
...@@ -17,6 +17,8 @@ int strncmp(const char *s1, const char *s2, size_t n); ...@@ -17,6 +17,8 @@ int strncmp(const char *s1, const char *s2, size_t n);
char *strndup(const char *s, size_t n); char *strndup(const char *s, size_t n);
char *strcpy(char *dest, const char *src); char *strcpy(char *dest, const char *src);
char *strcat(char *dest, const char *src); char *strcat(char *dest, const char *src);
char *strchr(const char *s, int c);
char *strstr(const char *haystack, const char *needle);
int printf(const char *fmt, ...); int printf(const char *fmt, ...);
int snprintf(char *str, size_t size, const char *fmt, ...); int snprintf(char *str, size_t size, const char *fmt, ...);
...@@ -108,3 +108,31 @@ char *strcat(char *dest, const char *src) { ...@@ -108,3 +108,31 @@ char *strcat(char *dest, const char *src) {
*d = '\0'; *d = '\0';
return dest; return dest;
} }
// Public Domain implementation of strchr from:
// http://en.wikibooks.org/wiki/C_Programming/Strings#The_strchr_function
char *strchr(const char *s, int c)
{
/* Scan s for the character. When this loop is finished,
s will either point to the end of the string or the
character we were looking for. */
while (*s != '\0' && *s != (char)c)
s++;
return ((*s == c) ? (char *) s : 0);
}
// Public Domain implementation of strstr from:
// http://en.wikibooks.org/wiki/C_Programming/Strings#The_strstr_function
char *strstr(const char *haystack, const char *needle)
{
size_t needlelen;
/* Check for the null needle case. */
if (*needle == '\0')
return (char *) haystack;
needlelen = strlen(needle);
for (; (haystack = strchr(haystack, *needle)) != 0; haystack++)
if (strncmp(haystack, needle, needlelen) == 0)
return (char *) haystack;
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment