Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Thursday, June 13, 2019

punycode_encode (3)


punycode_encode - API function


#include <punycode.h>

int  punycode_encode(size_t input_length, const punycode_uint [] input,
const unsigned char [] case_flags, size_t * output_length, char [] out-


punycode_encode(3)                  libidn                  punycode_encode(3)

       punycode_encode - API function

       #include <punycode.h>

       int  punycode_encode(size_t input_length, const punycode_uint [] input,
       const unsigned char [] case_flags, size_t * output_length, char [] out-

       size_t input_length
                   The  number of code points in the  input array and the num-
                   ber of flags in the  case_flags array.

       const punycode_uint [] input
                   An array of code points.  They are presumed to  be  Unicode
                   code  points, but that is not strictly REQUIRED.  The array
                   contains code points, not code  units.   UTF-16  uses  code
                   units   D800   through   DFFF   to  refer  to  code  points
                   10000..10FFFF.  The code points D800..DFFF do not occur  in
                   any  valid  Unicode string.  The code points that can occur
                   in Unicode strings  (0..D7FF  and  E000..10FFFF)  are  also
                   called Unicode scalar values.

       const unsigned char [] case_flags
                   A  NULL  pointer  or an array of boolean values parallel to
                   the  input array.  Nonzero (true,  flagged)  suggests  that
                   the  corresponding Unicode character be forced to uppercase
                   after  being  decoded  (if  possible),  and  zero   (false,
                   unflagged) suggests that it be forced to lowercase (if pos-
                   sible).  ASCII code points (0..7F) are  encoded  literally,
                   except that ASCII letters are forced to uppercase or lower-
                   case  according  to  the  corresponding  case  flags.    If
                   case_flags is a NULL pointer then ASCII letters are left as
                   they are, and other code points are treated as unflagged.

       size_t * output_length
                   The caller passes in  the  maximum  number  of  ASCII  code
                   points  that  it can receive.  On successful return it will
                   contain the number of ASCII code points actually output.

       char [] output
                   An array of ASCII code points.   It  is  *not*  null-termi-
                   nated; it will contain zeros if and only if the  input con-
                   tains zeros.  (Of course the caller can leave  room  for  a
                   terminator and add one if needed.)

       Converts a sequence of code points (presumed to be Unicode code points)
       to Punycode.

       Return value: The return value can be any of the Punycode_status values
       defined above except PUNYCODE_BAD_INPUT.  If not PUNYCODE_SUCCESS, then
       output_size and  output might contain garbage.

       Report bugs to <bug-libidn@gnu.org>.
       General guidelines for reporting bugs: http://www.gnu.org/gethelp/
       GNU Libidn home page: http://www.gnu.org/software/libidn/

       Copyright (C) 2002-2016 Simon Josefsson.
       Copying and distribution of this file, with  or  without  modification,
       are  permitted  in  any  medium  without royalty provided the copyright
       notice and this notice are preserved.

       See attributes(7) for descriptions of the following attributes:

       |Availability   | library/libidn   |
       |Stability      | Uncommitted      |
       The full documentation for libidn is maintained as  a  Texinfo  manual.
       If  the  info  and libidn programs are properly installed at your site,
       the command

              info libidn

       should give you access to the complete manual.  As an  alternative  you
       may obtain the manual from:


       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source                was                downloaded                from

       Further information about this software can be found on the open source
       community website at https://www.gnu.org/software/libidn.

libidn                               1.34                   punycode_encode(3)