u8_strcmp - UTF-8 string comparison function
#include <sys/sunddi.h> int u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t unicode_version, int *errno);
Solaris DDI specific (Solaris DDI)
s1, s2
n
flag
U8_STRCMP_CS
U8_STRCMP_CI_UPPER
U8_STRCMP_CI_LOWER
U8_STRCMP_NFD
U8_STRCMP_NFC
U8_STRCMP_NFKD
U8_STRCMP_NFKC
Only one case-sensitive or case-insensitive option is allowed. Only one Unicode Normalization option is allowed.
unicode_version
U8_UNICODE_320
U8_UNICODE_500
U8_UNICODE_LATEST
errno
EBADF
EILSEQ
EINVAL
ERANGE
After proper pre-processing, the u8_strcmp() function compares two UTF-8 strings byte-by-byte, according to the machine ordering defined by the corresponding version of the Unicode Standard.
When multiple comparison options are specified, Unicode Normalization is performed after case-sensitive or case-insensitive processing is performed.
The u8_strcmp() function returns an integer greater than, equal to, or less than 0 if the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2, respectively.
When u8_strcmp() detects an illegal or incomplete character, such character causes the function to set errno to indicate the error. Afterward, the comparison is still performed on the resultant strings and a value based on byte-by-byte comparison is always returned.
The u8_strcmp() function can be called from user or interrupt context.
Example 1 Perform simple default string comparison.
#include <sys/sunddi.h> int docmp_default(const char *u1, const char *u2) { int result; int ; result = u8_strcmp(u1, u2, 0, 0, U8_UNICODE_LATEST, &errno); if (errno == EILSEQ) return (-1); if (errno == EINVAL) return (-2); if (errno == EBADF) return (-3); if (errno == ERANGE) return (-4);
Example 2 Perform upper case based case-insensitive comparison with Unicode 3.2.0 date.
#include <sys/sunddi.h> int docmp_caseinsensitive_u320(const char *u1, const char *u2) { int result; int errno; result = u8_strcmp(u1, u2, 0, U8_STRCMP_CI_UPPER, U8_UNICODE_320, &errno); if (errno == EILSEQ) return (-1); if (errno == EINVAL) return (-2); if (errno == EBADF) return (-3); if (errno == ERANGE) return (-4); return (result); }
Example 3 Perform Unicode Normalization Form D.
Perform Unicode Normalization Form D and uppercase-based case-insensitive comparison with Unicode 3.2.0 date.
#include <sys/sunddi.h> int docmp_nfd_caseinsensitive_u320(const char *u1, const char *u2) { int result; int errno; result = u8_strcmp(u1, u2, 0, (U8_STRCMP_NFD|U8_STRCMP_CI_UPPER), U8_UNICODE_320, &errno); if (errno == EILSEQ) return (-1); if (errno == EINVAL) return (-2); if (errno == EBADF) return (-3); if (errno == ERANGE) return (-4); return (result); }
See attributes(5) for descriptions of the following attributes:
|
u8_validate(3C), u8_textprep_str(3C), u8_validate(3C), attributes(5), u8_textprep_str(9F), u8_validate(9F), uconv_u16tou32(9F)
The Unicode Standard (http://www.unicode.org)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |