1 /* internal.h Internal header file for libidn.
2 * Copyright (C) 2002, 2003 Simon Josefsson
4 * This file is part of GNU Libidn.
6 * GNU Libidn is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * GNU Libidn is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with GNU Libidn; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
33 #define LOCALE_WORKS 1
52 #ifdef HAVE_SYS_TYPES_H
53 #include <sys/types.h>
61 # include <inttypes.h>
69 # if !STDC_HEADERS && HAVE_MEMORY_H
78 #if defined(WITH_DMALLOC) && WITH_DMALLOC
84 #include "stringprep.h"
88 /*! \mainpage GNU Internationalized Domain Name Library
90 * \section intro Introduction
92 * GNU Libidn is an implementation of the Stringprep, Punycode and IDNA
93 * specifications defined by the IETF Internationalized Domain Names
94 * (IDN) working group, used for internationalized domain names. The
95 * package is available under the GNU Lesser General Public License.
97 * The library contains a generic Stringprep implementation that does
98 * Unicode 3.2 NFKC normalization, mapping and prohibitation of
99 * characters, and bidirectional character handling. Profiles for iSCSI,
100 * Kerberos 5, Nameprep, SASL and XMPP are included. Punycode and ASCII
101 * Compatible Encoding (ACE) via IDNA are supported.
103 * The Stringprep API consists of two main functions, one for converting
104 * data from the system's native representation into UTF-8, and one
105 * function to perform the Stringprep processing. Adding a new
106 * Stringprep profile for your application within the API is
107 * straightforward. The Punycode API consists of one encoding function
108 * and one decoding function. The IDNA API consists of the ToASCII and
109 * ToUnicode functions, as well as an high-level interface for converting
110 * entire domain names to and from the ACE encoded form.
112 * The library is used by, e.g., GNU SASL and Shishi to process user
113 * names and passwords. Libidn can be built into GNU Libc to enable a
114 * new system-wide getaddrinfo() flag for IDN processing.
116 * Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
117 * platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
118 * Libidn is written in C and (parts of) the API is accessible from C,
119 * C++, Emacs Lisp, Python and Java.
121 * The project web page:\n
122 * http://www.gnu.org/software/libidn/
124 * The software archive:\n
125 * ftp://alpha.gnu.org/pub/gnu/libidn/
127 * For more information see:\n
128 * http://www.ietf.org/html.charters/idn-charter.html\n
129 * http://www.ietf.org/rfc/rfc3454.txt (stringprep specification)\n
130 * http://www.ietf.org/rfc/rfc3490.txt (idna specification)\n
131 * http://www.ietf.org/rfc/rfc3491.txt (nameprep specification)\n
132 * http://www.ietf.org/rfc/rfc3492.txt (punycode specification)\n
133 * http://www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-string-prep-04.txt\n
134 * http://www.ietf.org/internet-drafts/draft-ietf-krb-wg-utf8-profile-01.txt\n
135 * http://www.ietf.org/internet-drafts/draft-ietf-sasl-anon-00.txt\n
136 * http://www.ietf.org/internet-drafts/draft-ietf-sasl-saslprep-00.txt\n
137 * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-nodeprep-01.txt\n
138 * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-resourceprep-01.txt\n
140 * Further information and paid contract development:\n
141 * Simon Josefsson <simon@josefsson.org>
143 * \section examples Examples
146 * \include example3.c
147 * \include example4.c
150 #endif /* _INTERNAL_H */