The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

kiconvstr (9)
  • >> kiconvstr (9) ( Solaris man: Ядро )
  •  

    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 bitwise-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 number 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 corresponding 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 corresponding characters in another codeset, in the array specified by outarray. The codesets are those specified in fromcode and tocode parameters. 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, conversion 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 codeset, 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 TYPEATTRIBUTE VALUE

    Interface StabilityCommitted

     

    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


     

    Index

    NAME
    SYNOPSIS
    INTERFACE LEVEL
    PARAMETERS
    DESCRIPTION
    RETURN VALUES
    CONTEXT
    EXAMPLES
    ATTRIBUTES
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру