diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-11-17 03:58:53 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-11-17 03:58:53 +0100 |
commit | 32da28619e84abb2da6e6088848b1fc9c66a9a6a (patch) | |
tree | 5047eae7a92e33d18b431ecfc79b56a5695d7bc4 /src/string/strstr.c | |
parent | strcasecmp, strncasecmp, strcasecmp_l, and strncasecmp_l are implemented in src/string/ rather than src/strings/ (diff) | |
download | slibc-32da28619e84abb2da6e6088848b1fc9c66a9a6a.tar.gz slibc-32da28619e84abb2da6e6088848b1fc9c66a9a6a.tar.bz2 slibc-32da28619e84abb2da6e6088848b1fc9c66a9a6a.tar.xz |
split strstr.c and strchr.c
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/string/strstr.c')
-rw-r--r-- | src/string/strstr.c | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/src/string/strstr.c b/src/string/strstr.c index f396570..dadbc73 100644 --- a/src/string/strstr.c +++ b/src/string/strstr.c @@ -16,13 +16,6 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <string.h> -#include <stdint.h> -#include <unistd.h> -#include <alloca.h> -#include <ctype.h> - - -# pragma GCC diagnostic ignored "-Wdiscarded-qualifiers" @@ -42,229 +35,3 @@ char* (strstr)(const char* haystack, const char* needle) return (memmem)(haystack, strlen(haystack), needle, strlen(needle)); } - -/** - * Finds the first occurrence of a substring. - * This search is case insensitive. - * - * @param haystack The string to search. - * @param needle The sought after substring. - * @return Pointer to the first occurrence of the - * substring, `NULL` if not found. - */ -char* (strcasestr)(const char* haystack, const char* needle) -{ - return (memcasemem)(haystack, strlen(haystack), needle, strlen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case sensitive. - * - * This is a slibc extension added for because it was useful - * in implementing slibc itself. - * - * @param haystack The string to search. - * @param needle The sought after substring. - * @param maxlen The maximum number of character to search. - * @return Pointer to the first occurrence of the - * substring, `NULL` if not found. - */ -char* (strnstr)(const char* haystack, const char* needle, size_t maxlen) -{ - return (memmem)(haystack, strnlen(haystack, maxlen), needle, strlen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case insensitive. - * - * This is a slibc extension added for completeness. - * - * @param haystack The string to search. - * @param needle The sought after substring. - * @param maxlen The maximum number of character to search. - * @return Pointer to the first occurrence of the - * substring, `NULL` if not found. - */ -char* (strncasestr)(const char* haystack, const char* needle, size_t maxlen) -{ - return (memcasemem)(haystack, strnlen(haystack, maxlen), needle, strlen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case sensitive. - * It must already be known that such a substring exists. - * - * This is a slibc extension. - * - * @param haystack The string to search. - * @param needle The sought after substring. - * @return Pointer to the first occurrence of the substring. - */ -char* (rawstrstr)(const char* haystack, const char* needle) -{ - return (memmem)(haystack, SIZE_MAX, needle, strlen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case insensitive. - * It must already be known that such a substring exists. - * - * This is a slibc extension. - * - * @param haystack The string to search. - * @param needle The sought after substring. - * @return Pointer to the first occurrence of the substring. - */ -char* (rawstrcasestr)(const char* haystack, const char* needle) -{ - return (memcasemem)(haystack, SIZE_MAX, needle, strlen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case sensitive. - * - * This is a GNU-compliant slibc extension. It was useful - * in implementing slibc itself. - * - * @param haystack The string to search. - * @param haystack_length The number of character to search. - * @param needle The sought after substring. - * @param needle_length The length of `needle`. - * @return Pointer to the first occurrence of - * the substring, `NULL` if not found. - */ -void* (memmem)(const void* __haystack, size_t haystack_length, - const void* __needle, size_t needle_length) -{ - const char* haystack = __haystack; - const char* needle = __needle; - if (haystack_length < needle_length) - return NULL; - if (haystack_length == needle_length) - return !(memcmp)(haystack, needle, haystack_length) ? haystack : NULL; -#include "substring.h" -} - - -/** - * Finds the first occurrence of a substring. - * This search is case insensitive. - * - * This is a slibc extension added because it was useful - * in implementing slibc itself. - * - * @param haystack The string to search. - * @param haystack_length The number of character to search. - * @param needle The sought after substring. - * @param needle_length The length of `needle`. - * @return Pointer to the first occurrence of - * the substring, `NULL` if not found. - */ -void* (memcasemem)(const void* __haystack, size_t haystack_length, - const void* __needle, size_t needle_length) -{ - const char* haystack = __haystack; - const char* needle = __needle; - if (haystack_length < needle_length) - return NULL; - if (haystack_length == needle_length) - return !(memcasecmp)(haystack, needle, haystack_length) ? haystack : NULL; -#define CASE -#include "substring.h" -#undef CASE -} - - -/** - * Check whether a string starts with a specific string. - * This check is case sensitive. - * - * This is a slibc extension. - * - * @param string The string to inspect. - * @param desired The desired beginning of the string. - * @return `string` if `string` begins with - * `desired`, `NULL` otherwise. - */ -char* (strstarts)(const char* string, const char* desired) -{ - size_t n = strlen(string); - size_t m = strlen(desired); - if (n < m) - return NULL; - return (memcmp)(string, desired, m) ? NULL : string; -} - - -/** - * Check whether a string ends with a specific string. - * This check is case sensitive. - * - * This is a slibc extension. - * - * @param string The string to inspect. - * @param desired The desired ending of the string. - * @return The `string`, where `desired` beings if - * `string` ends with `desired`, `NULL` otherwise. - */ -char* (strends)(const char* string, const char* desired) -{ - size_t n = strlen(string); - size_t m = strlen(desired); - if (n < m) - return NULL; - return (memcmp)(string + (n - m), desired, m) ? NULL : (string + n); -} - - -/** - * Check whether a string starts with a specific string. - * This check is case insensitive. - * - * This is a slibc extension. - * - * @param string The string to inspect. - * @param desired The desired beginning of the string. - * @return `string` if `string` begins with - * `desired`, `NULL` otherwise. - */ -char* (strcasestarts)(const char* string, const char* desired) -{ - size_t n = strlen(string); - size_t m = strlen(desired); - if (n < m) - return NULL; - return (memcasecmp)(string, desired, m) ? NULL : string; -} - - -/** - * Check whether a string ends with a specific string. - * This check is case insensitive. - * - * This is a slibc extension. - * - * @param string The string to inspect. - * @param desired The desired ending of the string. - * @return The `string`, where `desired` beings if - * `string` ends with `desired`, `NULL` otherwise. - */ -char* (strcaseends)(const char* string, const char* desired) -{ - size_t n = strlen(string); - size_t m = strlen(desired); - if (n < m) - return NULL; - return (memcasecmp)(string + (n - m), desired, m) ? NULL : (string + n); -} - |