Remove obsolete test (we break backwards compatibility).
[libidn.git] / internal.h
blobbde91e64677c538e705264b875fb22e1e659b4a9
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
22 #ifndef _INTERNAL_H
23 #define _INTERNAL_H
25 #ifdef _LIBC
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
30 #include <errno.h>
32 #define HAVE_ICONV 1
33 #define LOCALE_WORKS 1
35 #else /* _LIBC */
37 #if HAVE_CONFIG_H
38 #include "config.h"
39 #endif
41 #ifdef STDC_HEADERS
42 #include <stdio.h>
43 #include <stdlib.h>
44 #include <stdarg.h>
45 #include <ctype.h>
46 #endif
48 #if HAVE_UNISTD_H
49 #include <unistd.h>
50 #endif
52 #ifdef HAVE_SYS_TYPES_H
53 #include <sys/types.h>
54 #endif
56 #ifdef HAVE_ERRNO_H
57 #include <errno.h>
58 #endif
60 #if HAVE_STRING_H
61 # if !STDC_HEADERS && HAVE_MEMORY_H
62 # include <memory.h>
63 # endif
64 # include <string.h>
65 #endif
66 #if HAVE_STRINGS_H
67 # include <strings.h>
68 #endif
70 #if defined(WITH_DMALLOC) && WITH_DMALLOC
71 #include <dmalloc.h>
72 #endif
74 #endif /* _LIBC */
76 #include "stringprep.h"
77 #include "punycode.h"
78 #include "idna.h"
80 /*! \mainpage GNU Internationalized Domain Name Library
82 * \section intro Introduction
84 * GNU Libidn is an implementation of the Stringprep, Punycode and IDNA
85 * specifications defined by the IETF Internationalized Domain Names
86 * (IDN) working group, used for internationalized domain names. The
87 * package is available under the GNU Lesser General Public License.
89 * The library contains a generic Stringprep implementation that does
90 * Unicode 3.2 NFKC normalization, mapping and prohibitation of
91 * characters, and bidirectional character handling. Profiles for iSCSI,
92 * Kerberos 5, Nameprep, SASL and XMPP are included. Punycode and ASCII
93 * Compatible Encoding (ACE) via IDNA are supported.
95 * The Stringprep API consists of two main functions, one for converting
96 * data from the system's native representation into UTF-8, and one
97 * function to perform the Stringprep processing. Adding a new
98 * Stringprep profile for your application within the API is
99 * straightforward. The Punycode API consists of one encoding function
100 * and one decoding function. The IDNA API consists of the ToASCII and
101 * ToUnicode functions, as well as an high-level interface for converting
102 * entire domain names to and from the ACE encoded form.
104 * The library is used by, e.g., GNU SASL and Shishi to process user
105 * names and passwords. Libidn can be built into GNU Libc to enable a
106 * new system-wide getaddrinfo() flag for IDN processing.
108 * Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
109 * platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
110 * Libidn is written in C and (parts of) the API is accessible from C,
111 * C++, Emacs Lisp, Python and Java.
113 * The project web page:\n
114 * http://www.gnu.org/software/libidn/
116 * The software archive:\n
117 * ftp://alpha.gnu.org/pub/gnu/libidn/
119 * For more information see:\n
120 * http://www.ietf.org/html.charters/idn-charter.html\n
121 * http://www.ietf.org/rfc/rfc3454.txt (stringprep specification)\n
122 * http://www.ietf.org/rfc/rfc3490.txt (idna specification)\n
123 * http://www.ietf.org/rfc/rfc3491.txt (nameprep specification)\n
124 * http://www.ietf.org/rfc/rfc3492.txt (punycode specification)\n
125 * http://www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-string-prep-04.txt\n
126 * http://www.ietf.org/internet-drafts/draft-ietf-krb-wg-utf8-profile-01.txt\n
127 * http://www.ietf.org/internet-drafts/draft-ietf-sasl-anon-00.txt\n
128 * http://www.ietf.org/internet-drafts/draft-ietf-sasl-saslprep-00.txt\n
129 * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-nodeprep-01.txt\n
130 * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-resourceprep-01.txt\n
132 * Further information and paid contract development:\n
133 * Simon Josefsson <simon@josefsson.org>
135 * \section examples Examples
137 * \include example.c
138 * \include example3.c
139 * \include example4.c
142 #endif /* _INTERNAL_H */