u8_strcmp man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

U8_STRCMP(3C)							 U8_STRCMP(3C)

NAME
       u8_strcmp - UTF-8 string comparison function

SYNOPSIS
       #include <sys/u8_textprep.h>

       int u8_strcmp(const char *s1, const char *s2, size_t n,
	    int flag, size_t 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:

		    U8_STRCMP_CS

			Perform case-sensitive string comparison. This is  the
			default.

		    U8_STRCMP_CI_UPPER

			Perform	 case-insensitive  string  comparison based on
			Unicode upper case converted results of s1 and s2.

		    U8_STRCMP_CI_LOWER

			Perform case-insensitive string	 comparison  based  on
			Unicode lower case converted results of s1 and s2.

		    U8_STRCMP_NFD

			Perform	 string	 comparison  after s1 and s2 have been
			normalized by using Unicode Normalization Form D.

		    U8_STRCMP_NFC

			Perform string comparison after s1 and	s2  have  been
			normalized by using Unicode Normalization Form C.

		    U8_STRCMP_NFKD

			Perform	 string	 comparison  after s1 and s2 have been
			normalized by using Unicode Normalization Form KD.

		    U8_STRCMP_NFKC

			Perform string comparison after s1 and	s2  have  been
			normalized by using Unicode Normalization Form KC.

		    Only  one  case-sensitive  or  case-insensitive  option is
		    allowed. Only one Unicode Normalization option is allowed.

       version
		    The version of Unicode data that  should  be  used	during
		    comparison. The following values are supported:

		    U8_UNICODE_320

			Use Unicode 3.2.0 data during comparison.

		    U8_UNICODE_500

			Use Unicode 5.0.0 data during comparison.

		    U8_UNICODE_LATEST

			Use  the  latest Unicode version data available, which
			is Unicode 5.0.0.

       errnum
		    A non-zero value indicates that an error has occurred dur‐
		    ing comparison. The following values are supported:

		    EBADF
			      The  specified option values are conflicting and
			      cannot be supported.

		    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  sup‐
			      ported.

DESCRIPTION
       The  u8_stcmp()	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 compares the result strings in byte-by-
       byte, machine ordering.

       When multiple comparison options are specified,	Unicode	 Normalization
       is  performed  after  case-sensitive  or case-insensitive processing is
       performed.

RETURN VALUES
       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 char‐
       acter  causes the function to set errnum to indicate the error.	After‐
       ward, the comparison is still performed on the resultant strings and  a
       value based on byte-by-byte comparison is always returned.

EXAMPLES
       Example 1 Perform simple default string comparison.

	 #include <sys/u8_textprep.h>

	 int
	 docmp_default(const char *u1, const char *u2) {
	     int result;
	     int errnum;

	     result = u8_strcmp(u1, u2, 0, 0, U8_UNICODE_LATEST, &errnum);
	     if (errnum == EILSEQ)
		 return (-1);
	     if (errnum == EINVAL)
		 return (-2);
	     if (errnum == EBADF)
		 return (-3);
	     if (errnum == ERANGE)
		 return (-4);

       Example	2  Perform  upper  case based case-insensitive comparison with
       Unicode 3.2.0 date.

	 #include <sys/u8_textprep.h>

	 int
	 docmp_caseinsensitive_u320(const char *u1, const char *u2) {
	     int result;
	     int errnum;

	     result = u8_strcmp(u1, u2, 0, U8_STRCMP_CI_UPPER,
		 U8_UNICODE_320, &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-insensi‐
       tive comparison with Unicode 3.2.0 date.

	 #include <sys/u8_textprep.h>

	 int
	 docmp_nfd_caseinsensitive_u320(const char *u1, const char *u2) {
	     int result;
	     int errnum;

	     result = u8_strcmp(u1, u2, 0,
		 (U8_STRCMP_NFD|U8_STRCMP_CI_UPPER), U8_UNICODE_320,
		 &errnum);
	     if (errnum == EILSEQ)
		 return (-1);
	     if (errnum == EINVAL)
		 return (-2);
	     if (errnum == EBADF)
		 return (-3);
	     if (errnum == ERANGE)
		 return (-4);

	     return (result);
	 }

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Committed	      │
       ├────────────────────┼─────────────────┤
       │MT-Level	    │ MT-Safe	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       u8_textprep_str(3C),   u8_validate(3C),	attributes(5),	u8_strcmp(9F),
       u8_textprep_str(9F), u8_validate(9F)

       The Unicode Standard (http://www.unicode.org)

				 Sep 12, 2007			 U8_STRCMP(3C)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net