Standard C Library Functions u8strcmp(3C)
NAME
u8strcmp - UTF-8 string comparison function
SYNOPSIS
#include
int u8strcmp(const char *s1, const char *s2, sizet n,
int flag, sizet version, int *errnum);
PARAMETERS
s1, s2 Pointers to null-terminated UTF-8 strings
n The maximum number of bytes to be compared. If
0, the comparison is performed until either or
both of the strings are examined to the string
terminating null byte.
flag The possible comparison options constructed by
a bit-wise-inclusive-OR of the following
values:
U8STRCMPCS
Perform case-sensitive string comparison.
This is the default.
U8STRCMPCIUPER
Perform case-insensitive string comparison
based on Unicode upper case converted
results of s1 and s2.
U8STRCMPCILOWER
Perform case-insensitive string comparison
based on Unicode lower case converted
results of s1 and s2.
U8STRCMPNFD
Perform string comparison after s1 and s2
have been normalized by using Unicode Nor-
malization Form D.
SunOS 5.11 Last change: 12 Sep 2007 1
Standard C Library Functions u8strcmp(3C)
U8STRCMPNFC
Perform string comparison after s1 and s2
have been normalized by using Unicode Nor-
malization Form C.
U8STRCMPNFKD
Perform string comparison after s1 and s2
have been normalized by using Unicode Nor-
malization Form KD.
U8STRCMPNFKC
Perform string comparison after s1 and s2
have been normalized by using Unicode Nor-
malization Form KC.
Only one case-sensitive or case-insensitive
option is allowed. Only one Unicode Normaliza-
tion option is allowed.
version The version of Unicode data that should be used
during comparison. The following values are
supported:
U8UNICODE320
Use Unicode 3.2.0 data during comparison.
U8UNICODE500
Use Unicode 5.0.0 data during comparison.
U8UNICODELATEST
Use the latest Unicode version data avail-
able, which is Unicode 5.0.0.
errnum A non-zero value indicates that an error has
occurred during comparison. The following
values are supported:
EBADF The specified option values are con-
flicting and cannot be supported.
SunOS 5.11 Last change: 12 Sep 2007 2
Standard C Library Functions u8strcmp(3C)
EILSEQ There was an illegal character at s1,
s2, or both.
EINVAL There was an incomplete character at
s1, s2, or both.
ERANGE The specified Unicode version value
is not supported.
DESCRIPTION
The u8stcmp() function internally processes UTF-8 strings
pointed to by s1 and s2 based on the corresponding version
of the Unicode Standard and other input arguments and com-
pares the result strings in byte-by-byte, machine ordering.
When multiple comparison options are specified, Unicode Nor-
malization is performed after case-sensitive or case-
insensitive processing is performed.
RETURN VALUES
The u8strcmp() 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 u8strcmp() detects an illegal or incomplete character,
such character causes the function to set errnum to indicate
the error. Afterward, the comparison is still performed on
the resultant strings and a value based on byte-by-byte com-
parison is always returned.
EXAMPLES
Example 1 Perform simple default string comparison.
#include
int
docmpdefault(const char *u1, const char *u2) {
int result;
int errnum;
result = u8strcmp(u1, u2, 0, 0, U8UNICODELATEST, &errnum);
if (errnum == EILSEQ)
return (-1);
if (errnum == EINVAL)
return (-2);
SunOS 5.11 Last change: 12 Sep 2007 3
Standard C Library Functions u8strcmp(3C)
if (errnum == EBADF)
return (-3);
if (errnum == ERANGE)
return (-4);
Example 2 Perform upper case based case-insensitive com-
parison with Unicode 3.2.0 date.
#include
int
docmpcaseinsensitiveu320(const char *u1, const char *u2) {
int result;
int errnum;
result = u8strcmp(u1, u2, 0, U8STRCMPCIUPER,
U8UNICODE320, &errnum);
if (errnum == EILSEQ)
return (-1);
if (errnum == EINVAL)
return (-2);
if (errnum == EBADF)
return (-3);
if (errnum == ERANGE)
return (-4);
return (result);
}
Example 3 Perform Unicode Normalization Form D.
Perform Unicode Normalization Form D and upper case based
case-insensitive comparison with Unicode 3.2.0 date.
#include
int
docmpnfdcaseinsensitiveu320(const char *u1, const char *u2) {
int result;
int errnum;
result = u8strcmp(u1, u2, 0,
(U8STRCMPNFDU8STRCMPCIUPER), U8UNICODE320,
&errnum);
if (errnum == EILSEQ)
return (-1);
if (errnum == EINVAL)
return (-2);
SunOS 5.11 Last change: 12 Sep 2007 4
Standard C Library Functions u8strcmp(3C)
if (errnum == EBADF)
return (-3);
if (errnum == ERANGE)
return (-4);
return (result);
}
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Committed
MT-Level MT-Safe
SEE ALSO
u8textprepstr(3C), u8validate(3C), attributes(5),
u8strcmp(9F), u8textprepstr(9F), u8validate(9F)
The Unicode Standard (http:/www.unicode.org)
SunOS 5.11 Last change: 12 Sep 2007 5
|