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