diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-11-17 06:57:59 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-11-17 06:57:59 +0100 |
commit | 0a9ed0f9b84247b0dda23500b7ab301a1238736b (patch) | |
tree | c990f32ee3de20fe5756a8f5c111d47e43cf7606 /src/wchar/wcsstr.c | |
parent | add wcsset (diff) | |
download | slibc-0a9ed0f9b84247b0dda23500b7ab301a1238736b.tar.gz slibc-0a9ed0f9b84247b0dda23500b7ab301a1238736b.tar.bz2 slibc-0a9ed0f9b84247b0dda23500b7ab301a1238736b.tar.xz |
m + split wchar/*.c
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/wchar/wcsstr.c')
-rw-r--r-- | src/wchar/wcsstr.c | 247 |
1 files changed, 2 insertions, 245 deletions
diff --git a/src/wchar/wcsstr.c b/src/wchar/wcsstr.c index b0600e1..e88530d 100644 --- a/src/wchar/wcsstr.c +++ b/src/wchar/wcsstr.c @@ -16,27 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <wchar.h> -#include <stdint.h> -#include <unistd.h> -#include <alloca.h> -/* TODO #include <wctype.h> */ -#define WIDE - - -# pragma GCC diagnostic ignored "-Wdiscarded-qualifiers" - - - -/** - * This function is identical to `wcsstr`. - */ -wchar_t* (wcswcs)(const wchar_t* haystack, const wchar_t* needle) -{ - if (*needle && !(needle[1])) - return (wcschr)(haystack, *needle); - return (wcsstr)(haystack, needle); -} /** @@ -50,231 +30,8 @@ wchar_t* (wcswcs)(const wchar_t* haystack, const wchar_t* needle) */ wchar_t* (wcsstr)(const wchar_t* haystack, const wchar_t* needle) { + if (*needle && !(needle[1])) + return (wcschr)(haystack, *needle); return (wmemmem)(haystack, wcslen(haystack), needle, wcslen(needle)); } - -/** - * Finds the first occurrence of a substring. - * This search is case insensitive. - * - * 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, `NULL` if not found. - */ -wchar_t* (wcscasestr)(const wchar_t* haystack, const wchar_t* needle) -{ - return (wmemcasemem)(haystack, wcslen(haystack), needle, wcslen(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. - */ -wchar_t* (wcsnstr)(const wchar_t* haystack, const wchar_t* needle, size_t maxlen) -{ - return (wmemmem)(haystack, wcsnlen(haystack, maxlen), needle, wcslen(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. - */ -wchar_t* (wcsncasestr)(const wchar_t* haystack, const wchar_t* needle, size_t maxlen) -{ - return (wmemcasemem)(haystack, wcsnlen(haystack, maxlen), needle, wcslen(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. - */ -wchar_t* (rawwcsstr)(const wchar_t* haystack, const wchar_t* needle) -{ - return (wmemmem)(haystack, SIZE_MAX, needle, wcslen(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. - */ -wchar_t* (rawwcscasestr)(const wchar_t* haystack, const wchar_t* needle) -{ - return (wmemcasemem)(haystack, SIZE_MAX, needle, wcslen(needle)); -} - - -/** - * Finds the first occurrence of a substring. - * This search is case sensitive. - * - * This is a slibc extension added for completeness, - * and because it was 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. - */ -wchar_t* (wmemmem)(const wchar_t* haystack, size_t haystack_length, - const wchar_t* needle, size_t needle_length) -{ - if (haystack_length < needle_length) - return NULL; - if (haystack_length == needle_length) - return !wmemcmp(haystack, needle, haystack_length) ? haystack : NULL; -#include "../string/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. - */ -wchar_t* (wmemcasemem)(const wchar_t* haystack, size_t haystack_length, - const wchar_t* needle, size_t needle_length) -{ - if (haystack_length < needle_length) - return NULL; - if (haystack_length == needle_length) - return !wmemcasecmp(haystack, needle, haystack_length) ? haystack : NULL; -#define CASE -#include "../string/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. - */ -wchar_t* (wcsstarts)(const wchar_t* string, const wchar_t* desired) -{ - size_t n = wcslen(string); - size_t m = wcslen(desired); - if (n < m) - return NULL; - return wmemcmp(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. - */ -wchar_t* (wcsends)(const wchar_t* string, const wchar_t* desired) -{ - size_t n = wcslen(string); - size_t m = wcslen(desired); - if (n < m) - return NULL; - return wmemcmp(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. - */ -wchar_t* (wcscasestarts)(const wchar_t* string, const wchar_t* desired) -{ - size_t n = wcslen(string); - size_t m = wcslen(desired); - if (n < m) - return NULL; - return wmemcasecmp(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. - */ -wchar_t* (wcscaseends)(const wchar_t* string, const wchar_t* desired) -{ - size_t n = wcslen(string); - size_t m = wcslen(desired); - if (n < m) - return NULL; - return wmemcasecmp(string + (n - m), desired, m) ? NULL : (string + n); -} - |