Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
idn_decodename(3)	   Library Functions Manual	     idn_decodename(3)

NAME
       idn_decodename,	idn_decodename2	 -  decode an internationalized	domain
       name

SYNOPSIS
       #include	<idn/api.h>

       idn_result_t
       idn_decodename(idn_action_t actions, const char *from, char *to,
	   size_t tolen);

       idn_result_t
       idn_decodename2(idn_action_t actions, const char	*from, char *to,
	   size_t tolen, const char *auxencoding);

DESCRIPTION
       The function idn_decodename() decodes a domain name from	and writes the
       result  on  to, at most tolen bytes.  Note that from must be terminated
       by NUL, and tolen includes room for a NUL character.

       The argument actions specifies  which  steps  in	 the  entire  decoding
       process should be performed. The	following list shows action names cor-
       responding with steps of	the decoding process.  The  function  performs
       the steps in that order.

	   1. IDN_UNICODECONV
		  Convert  a domain name from local decoding (e.g. ISO-8859-1)
		  to UTF-8.

	   2. IDN_MAP
		  Perform mappings (NFC, Lowercase conversion, etc.).

	   3. IDN_ASCLOWER
		  Convert ASCII	uppercase letters (A..Z) to lowercase (a..z).

	   4. IDN_IDNCONV
		  Convert A-labels to U-labels.

	   5. IDN_PROHCHECK
		  Check	prohibited code	points.

	   6. IDN_UNASCHECK
		  Check	unassigned code	points.

	   7. IDN_NFCCHECK
		  Check	labels are in NFC.

	   8. IDN_PREFCHECK
		  Check	labels containing "--" in the 3rd and 4th characters.

	   9. IDN_HYPHCHECK
		  Check	labels beginning/ending	with "-".

	   10. IDN_COMBCHECK
		  Check	labels beginning with a	combining mark.

	   11. IDN_CTXJCHECK
		  Check	CONTEXTJ code points.

	   12a.	IDN_CTXOCHECK
		  Check	CONTEXTO code points for the registration protocol.

	   12b.	IDN_CTXOLITECHECK
		  Check	CONTEXTO code points for the lookup protocol.

	   13. IDN_BIDICHECK
		  Check	requirements specified in [IDNA2008-BIDI].

	   14. IDN_LOCALCHECK
		  Perform local	check (optional).

	   15. IDN_RTCHECK
		  Perform round	trip check for each label.

	   16. IDN_LOCALCONV
		  Convert a domain name	from UTF-8  to	local  encoding	 (e.g.
		  ISO-8859-1).

       Between	the  step  2 and 3, the	domain name is split into labels.  The
       step 3 through 15 are applied to	each label. After the step 15,	labels
       are joined with a separator ``.''.

       A value of bitwise-OR of	some actions can be specified, like:

	   r = idn_decodename(IDN_IDNCONV | IDN_LOCALCONV, from, to, tolen);

       The  function  idn_decodename2()	works same as idn_decodename(),	but an
       encoding	conversion from	auxencoding to UTF-8 is	performed prior	to the
       actual  decoding	 process.  Instead, idn_decodename2() ignores IDN_UNI-
       CODECONV	action.	 If auxencoding	is NULL, from is treated as UTF-8.

       Also the	following actions are provided for convenience:

	   IDN_DECODE_REGIST
		  Decode a domain name with  IDNA2008  registration  protocol.
		  libidnkit  performs  the  step  1..11,  12a,	13, 15 and 16.
		  libidnkitlite	performs the step 2..11, 12a, 13 and 15.

	   IDN_DECODE_LOOKUP
		  Decode  a  domain  name  with	 IDNA2008   lookup   protocol.
		  libidnkit  performs  the  step 1..8, 10, 11, 12b, 13,	15 and
		  16.  libidnkitlite performs the step 2..8, 10, 11,  12b,  13
		  and 15.

       Upon success, the functions returns idn_success.	 Otherwise, it returns
       an error	code.  See idn_result_tostring(3) for  the  complete  list  of
       error codes.

EXAMPLE
       To  decode  an  internationalized  domain name returned from a resolver
       function, use idn_decodename().

	   idn_result_t	r;
	   char	ace_name[256];
	   struct hostent *hp;

	   ...
	   hp =	gethostbyname(name);
	   r = idn_decodename(IDN_DECODE_LOOKUP, hp->h_name, local_name,
			      sizeof(local_name));
	   if (r != idn_success) {
	       fprintf(stderr, "idn_decodename failed: %s\n",
		       idn_result_tostring(r));
	       exit(1);
	   }
	   printf("name: %s\n",	local_name);
	   ...

SEE ALSO
       idnconv(1),  libidnkit(3),   idn_nameinit(3),   idn_result_tostring(3),
       idn2.conf(5)

				 Sep 21, 2012		     idn_decodename(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=idn_decodename&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help