kiconvstr man page on SmartOS

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

KICONVSTR(9F)							 KICONVSTR(9F)

NAME
       kiconvstr - string-based code conversion function

SYNOPSIS
       #include <sys/types.h>
       #include <sys/errno.h>
       #include <sys/sunddi.h>

       size_t kiconvstr(const char *tocode, const char *fromcode, char *inarray,
	    size_t *inlen, char *outarray, size_t *outlen, int flag, int *errno);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       The parameters for the kiconvstr function are as follows:

       tocode
		   Points to a target codeset name string. Supported names are
		   specified at kiconv_open().

       fromcode
		   Points to a source codeset name string. Supported names are
		   specified at kiconv_open().

       inarray
		   Points  to  a byte array containing a sequence of character
		   bytes in fromcode codeset to be converted.

       inlen
		   As an input parameter, the number of bytes to be  converted
		   in  inarray. As an output parameter, the number of bytes in
		   inarray still not converted after the conversion.

       outarray
		   Points to a byte array where converted character  bytes  in
		   tocode codeset can be saved.

       outlen
		   As  an  input  parameter,  the number of available bytes at
		   outarray where converted character bytes can be  saved.  As
		   an output parameter, the number of bytes still available at
		   outarray after the conversion.

       flag
		   Indicates possible conversion options constructed by a bit‐
		   wise-inclusive-OR of the following values:

		   KICONV_IGNORE_NULL

		       Normally,   kiconvstr()	stops  the  conversion	if  it
		       encounters NULL byte  even  if  the  current  inlen  is
		       pointing to a value larger than zero.

		       If  this	 option	 is set, a NULL byte does not stop the
		       conversion and the conversion continues until the  num‐
		       ber  of inarray bytes pointed by inlen are all consumed
		       for conversion or an error happened.

		   KICONV_REPLACE_INVALID

		       Normally,  kiconvstr()  stops  the  conversion  if   it
		       encounters illegal or incomplete characters with corre‐
		       sponding errno values.

		       If this option is set, kiconvstr() does	not  stop  the
		       conversion  and	instead treats such characters as non-
		       identical conversion  cases.

       errno
		   Indicates the error when conversion	is  not	 completed  or
		   failed. The following are possible values:

		   EILSEQ
				The  input  conversion	was  stopped due to an
				input byte that does not belong to  the	 input
				codeset.

		   E2BIG
				The  input  conversion was stopped due to lack
				of space in the output array.

		   EINVAL
				The input conversion was  stopped  due	to  an
				incomplete  character or shift sequence at the
				end of the input array.

		   EBADF
				The requested conversion is not supported.

DESCRIPTION
       The kiconvstr() function converts the sequence of characters  from  one
       codeset,	 in  the array specified by inarray, into a sequence of corre‐
       sponding characters in another codeset, in the array specified by  out‐
       array.  The codesets are those specified in fromcode and tocode parame‐
       ters. The inarray parameter points to a character  byte	array  to  the
       first  character	 in  the input array and inlen indicates the number of
       bytes to the end of the array to be converted. The  outarray  parameter
       points  to  a  character	 byte array to the first available byte in the
       output array and outlen indicates the number of the available bytes  to
       the  end	 of the array. Unless KICONV_IGNORE_NULL is specified at flag,
       kiconvstr() function normally stops when it encounters NULL  byte  from
       the input array regardless of the current inlen value.

       If KICONV_REPLACE_INVALID is not specified at flag and if a sequence of
       input bytes does not form a valid character in the  specified  codeset,
       conversion  stops  after the previous successfully converted character.
       If KICONV_REPLACE_INVALID is not specified in flag  and	if  the	 input
       array  ends  with an incomplete character or shift sequence, conversion
       stops after the previous successfully converted bytes.  If  the	output
       array  is  not large enough to hold the entire converted input, conver‐
       sion stops just prior to the input bytes that would  cause  the	output
       array  to  overflow.  The  value	 pointed to by inlen is decremented to
       reflect the number of bytes still not converted in the input array. The
       value  pointed  to  by  outlen  is decremented to reflect the number of
       bytes still available in the output array.

       If kiconvstr() encounters a character in the input array that is legal,
       but for which an identical character does not exist in the target code‐
       set, kiconvstr() performs an  implementation-defined  conversion	 (that
       is, a non-identical conversion) on this character.

       If  KICONV_REPLACE_INVALID  is  specified  in  flag  and if kiconvstr()
       encounters illegal or incomplete characters in the input array, instead
       of  stopping  the conversion, kiconvstr() treats such characters	 as if
       they are non-identical characters and does non-identical conversions on
       such character bytes.

RETURN VALUES
       The kiconvstr() function updates the values pointed to by the inlen and
       outlen parameters to reflect the extent of the conversion  and  returns
       the number of non-identical conversions performed. If the entire string
       in the input array is converted, the value pointed to by inlen is 0. If
       the  input conversion is stopped due to any conditions mentioned above,
       the value pointed to by inlen is non-zero and errno is set to  indicate
       the  condition.	If an error occurs, kiconvstr() returns (size_t)-1 and
       sets errno to indicate the error.

CONTEXT
       kiconvstr() can be called from user or interrupt context.

EXAMPLES
       Example 1 Performing a Code Conversion

       The following example converts  a  NULL-terminated  ISO8859-2  pathname
       string  to  a UTF-8 string and treats illegal and incomplete characters
       as non-identical conversion cases. The conversion does not stop even if
       it encounters a NULL byte from the input array.

	 #include <sys/types.h>
	 #include <sys/errno.h>
	 #include <sys/sunddi.h>

		 :

	 size_t ret;
	 char ib[MAXPATHLEN];
	 char ob[MAXPATHLEN];
	 size_t il, ol;
	 int err;

		 :

	 /*
	  * We got the pathname from somewhere.
	  *
	  * Calculate the length of input string including the terminating
	  * NULL byte and prepare other parameters for the conversion.
	  */
	 (void) strlcpy(ib, pathname, MAXPATHLEN);
	 il = strlen(ib) + 1;
	 ol = MAXPATHLEN;

	 /*
	  * Do the conversion. If the ret > 0, that's the number of
	  * non-identical character conversions happened during the conversion.
	  * Regardless of whether we have conversion failure or not,
	  * outarray could contain some converted characters.
	  */
	 ret = kiconvstr("UTF-8", "ISO-8859-2", ib, &il, ob, &ol,
			 (KICONV_IGNORE_NULL|KICONV_REPLACE_INVALID), &err);
	 if (ret == (size_t)-1) {
		 /* Code conversion not supported? */
		 if (err == EBADF)
			 return (-1);

		 /* Output array too small? */
		 if (err == E2BIG)
			 return (-2);

		 /* Unknown error which isn't possible BTW. */
		 return (-3);
	 }

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

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

SEE ALSO
       iconv(3C),      iconv_close(3C),	    iconv_open(3C),	u8_strcmp(3C),
       u8_textprep_str(3C),	   u8_validate(3C),	   uconv_u16tou32(3C),
       uconv_u16tou8(3C),	 uconv_u32tou16(3C),	    uconv_u32tou8(3C),
       uconv_u8tou16(3C),   uconv_u8tou32(3C),	 attributes(5),	   kiconv(9F),
       kiconv_close(9F),  kiconv_open(9F), u8_strcmp(9F), u8_textprep_str(9F),
       u8_validate(9F),		uconv_u16tou32(9F),	    uconv_u16tou8(9F),
       uconv_u32tou16(9F),	  uconv_u32tou8(9F),	    uconv_u8tou16(9F),
       uconv_u8tou32(9F)

       The Unicode Standard:

       http://www.unicode.org/standard/standard.html

				 Oct 16, 2007			 KICONVSTR(9F)
[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