diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2014-09-18 18:55:44 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2014-09-18 18:55:44 +0000 |
commit | 3534b428629be185e096be99e3bd5fdfe32d5544 (patch) | |
tree | 210ef3198ed66bc7f7b7bf6a85e4579f455e5a36 /src/libstddjb/case_str.c | |
download | skalibs-3534b428629be185e096be99e3bd5fdfe32d5544.tar.xz |
initial commit with rc for skalibs-2.0.0.0
Diffstat (limited to 'src/libstddjb/case_str.c')
-rw-r--r-- | src/libstddjb/case_str.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/libstddjb/case_str.c b/src/libstddjb/case_str.c new file mode 100644 index 0000000..14409c3 --- /dev/null +++ b/src/libstddjb/case_str.c @@ -0,0 +1,32 @@ +/* ISC license. */ + +#include <skalibs/config.h> +#include <skalibs/sysdeps.h> + +#if defined(SKALIBS_HASSTRCASESTR) && !defined(SKALIBS_FLAG_REPLACE_LIBC) + +#include <skalibs/nonposix.h> +#include <string.h> +#include <skalibs/bytestr.h> + +unsigned int case_str (char const *haystack, char const *needle) +{ + register char *p = strcasestr(haystack, needle) ; + return p ? p - haystack : str_len(haystack) ; +} + +#else + +#include <skalibs/bytestr.h> + +unsigned int case_str (char const *haystack, char const *needle) +{ + unsigned int nlen = str_len(needle) ; + register char const *p = haystack ; + if (!nlen) return 0 ; + for (; *p ; p++) + if (!case_diffb(p, nlen, needle)) return p - haystack ; + return str_len(haystack) ; +} + +#endif |