glib2 3.2.1-x86-mingw32 → 3.2.2-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Rakefile +16 -15
- data/ext/glib2/glib2.def +3 -0
- data/ext/glib2/rbglib-bytes.c +1 -0
- data/ext/glib2/rbglib.h +5 -1
- data/ext/glib2/rbgobj_object.c +30 -17
- data/ext/glib2/rbgobj_type.c +246 -130
- data/ext/glib2/rbgobject.h +12 -1
- data/lib/2.2/glib2.so +0 -0
- data/lib/2.3/glib2.so +0 -0
- data/lib/2.4/glib2.so +0 -0
- data/lib/2.5/glib2.so +0 -0
- data/lib/gnome2/rake/external-package.rb +32 -12
- data/lib/gnome2/rake/windows-binary-build-task.rb +53 -52
- data/lib/mkmf-gnome2.rb +0 -10
- data/vendor/local/bin/asn1Coding.exe +0 -0
- data/vendor/local/bin/asn1Decoding.exe +0 -0
- data/vendor/local/bin/asn1Parser.exe +0 -0
- data/vendor/local/bin/envsubst.exe +0 -0
- data/vendor/local/bin/gdbus-codegen +13 -1
- data/vendor/local/bin/gdbus.exe +0 -0
- data/vendor/local/bin/gettext.exe +0 -0
- data/vendor/local/bin/gio-querymodules.exe +0 -0
- data/vendor/local/bin/gio.exe +0 -0
- data/vendor/local/bin/glib-compile-resources.exe +0 -0
- data/vendor/local/bin/glib-compile-schemas.exe +0 -0
- data/vendor/local/bin/glib-genmarshal +25 -14
- data/vendor/local/bin/glib-gettextize +2 -2
- data/vendor/local/bin/glib-mkenums +48 -21
- data/vendor/local/bin/gobject-query.exe +0 -0
- data/vendor/local/bin/gresource.exe +0 -0
- data/vendor/local/bin/gsettings.exe +0 -0
- data/vendor/local/bin/gspawn-win32-helper-console.exe +0 -0
- data/vendor/local/bin/gspawn-win32-helper.exe +0 -0
- data/vendor/local/bin/iconv.exe +0 -0
- data/vendor/local/bin/idn2.exe +0 -0
- data/vendor/local/bin/libasprintf-0.dll +0 -0
- data/vendor/local/bin/libcharset-1.dll +0 -0
- data/vendor/local/bin/libffi-6.dll +0 -0
- data/vendor/local/bin/libgio-2.0-0.dll +0 -0
- data/vendor/local/bin/libglib-2.0-0.dll +0 -0
- data/vendor/local/bin/libgmodule-2.0-0.dll +0 -0
- data/vendor/local/bin/libgmp-10.dll +0 -0
- data/vendor/local/bin/libgnutls-30.dll +0 -0
- data/vendor/local/bin/libgobject-2.0-0.dll +0 -0
- data/vendor/local/bin/libgthread-2.0-0.dll +0 -0
- data/vendor/local/bin/libhogweed-4-2.dll +0 -0
- data/vendor/local/bin/libiconv-2.dll +0 -0
- data/vendor/local/bin/libidn2-0.dll +0 -0
- data/vendor/local/bin/libintl-8.dll +0 -0
- data/vendor/local/bin/libnettle-6-2.dll +0 -0
- data/vendor/local/bin/libp11-kit-0.dll +0 -0
- data/vendor/local/bin/libpcre-1.dll +0 -0
- data/vendor/local/bin/libpcrecpp-0.dll +0 -0
- data/vendor/local/bin/libpcreposix-0.dll +0 -0
- data/vendor/local/bin/libtasn1-6.dll +0 -0
- data/vendor/local/bin/nettle-hash.exe +0 -0
- data/vendor/local/bin/nettle-lfib-stream.exe +0 -0
- data/vendor/local/bin/nettle-pbkdf2.exe +0 -0
- data/vendor/local/bin/ngettext.exe +0 -0
- data/vendor/local/bin/p11-kit.exe +0 -0
- data/vendor/local/bin/pcre-config +1 -1
- data/vendor/local/bin/pcregrep.exe +0 -0
- data/vendor/local/bin/pcretest.exe +0 -0
- data/vendor/local/bin/pkcs1-conv.exe +0 -0
- data/vendor/local/bin/sexp-conv.exe +0 -0
- data/vendor/local/bin/trust.exe +0 -0
- data/vendor/local/include/glib-2.0/gio/gappinfo.h +6 -6
- data/vendor/local/include/glib-2.0/gio/gapplication.h +9 -1
- data/vendor/local/include/glib-2.0/gio/gdatainputstream.h +3 -3
- data/vendor/local/include/glib-2.0/gio/gdbusconnection.h +3 -3
- data/vendor/local/include/glib-2.0/gio/gdbuserror.h +2 -2
- data/vendor/local/include/glib-2.0/gio/gdbusnamewatching.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gfile.h +21 -0
- data/vendor/local/include/glib-2.0/gio/gioenums.h +4 -4
- data/vendor/local/include/glib-2.0/gio/gioenumtypes.h +1 -1
- data/vendor/local/include/glib-2.0/gio/giomodule.h +24 -0
- data/vendor/local/include/glib-2.0/gio/giotypes.h +9 -3
- data/vendor/local/include/glib-2.0/gio/gmountoperation.h +15 -0
- data/vendor/local/include/glib-2.0/gio/gnetworkmonitor.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gproxyaddressenumerator.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gsocket.h +12 -0
- data/vendor/local/include/glib-2.0/gio/gsocketaddressenumerator.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gsocketconnectable.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gsocketlistener.h +1 -1
- data/vendor/local/include/glib-2.0/gio/gtlsclientconnection.h +2 -2
- data/vendor/local/include/glib-2.0/glib/gatomic.h +23 -23
- data/vendor/local/include/glib-2.0/glib/gbacktrace.h +3 -0
- data/vendor/local/include/glib-2.0/glib/gconvert.h +9 -3
- data/vendor/local/include/glib-2.0/glib/gdate.h +2 -0
- data/vendor/local/include/glib-2.0/glib/gdatetime.h +4 -0
- data/vendor/local/include/glib-2.0/glib/gfileutils.h +4 -8
- data/vendor/local/include/glib-2.0/glib/gkeyfile.h +5 -0
- data/vendor/local/include/glib-2.0/glib/gmacros.h +37 -6
- data/vendor/local/include/glib-2.0/glib/gmain.h +44 -12
- data/vendor/local/include/glib-2.0/glib/gmem.h +5 -4
- data/vendor/local/include/glib-2.0/glib/gmessages.h +69 -68
- data/vendor/local/include/glib-2.0/glib/gregex.h +3 -3
- data/vendor/local/include/glib-2.0/glib/gspawn.h +1 -1
- data/vendor/local/include/glib-2.0/glib/gtestutils.h +14 -5
- data/vendor/local/include/glib-2.0/glib/gtypes.h +2 -2
- data/vendor/local/include/glib-2.0/glib/gunicode.h +4 -4
- data/vendor/local/include/glib-2.0/glib/gutils.h +3 -1
- data/vendor/local/include/glib-2.0/glib/gversionmacros.h +24 -0
- data/vendor/local/include/glib-2.0/gobject/gobject.h +111 -4
- data/vendor/local/include/glib-2.0/gobject/gtype.h +8 -8
- data/vendor/local/include/glib-2.0/gobject/gtypemodule.h +1 -1
- data/vendor/local/include/glib-2.0/gobject/gvalue.h +2 -0
- data/vendor/local/include/idn2.h +347 -0
- data/vendor/local/include/libtasn1.h +1 -1
- data/vendor/local/include/nettle/nettle-stdint.h +1 -1
- data/vendor/local/include/p11-kit-1/p11-kit/iter.h +2 -0
- data/vendor/local/include/p11-kit-1/p11-kit/pkcs11.h +27 -6
- data/vendor/local/include/p11-kit-1/p11-kit/uri.h +12 -0
- data/vendor/local/lib/charset.alias +1 -1
- data/vendor/local/lib/gio/modules/libgiognutls.dll +0 -0
- data/vendor/local/lib/glib-2.0/include/glibconfig.h +7 -2
- data/vendor/local/lib/libasprintf.a +0 -0
- data/vendor/local/lib/libasprintf.dll.a +0 -0
- data/vendor/local/lib/libasprintf.la +2 -2
- data/vendor/local/lib/libcharset.a +0 -0
- data/vendor/local/lib/libcharset.dll.a +0 -0
- data/vendor/local/lib/libcharset.la +2 -2
- data/vendor/local/lib/libffi.a +0 -0
- data/vendor/local/lib/libffi.dll.a +0 -0
- data/vendor/local/lib/libffi.la +2 -2
- data/vendor/local/lib/libgio-2.0.dll.a +0 -0
- data/vendor/local/lib/libgio-2.0.la +6 -6
- data/vendor/local/lib/libglib-2.0.dll.a +0 -0
- data/vendor/local/lib/libglib-2.0.la +6 -6
- data/vendor/local/lib/libgmodule-2.0.dll.a +0 -0
- data/vendor/local/lib/libgmodule-2.0.la +6 -6
- data/vendor/local/lib/libgmp.dll.a +0 -0
- data/vendor/local/lib/libgmp.la +2 -2
- data/vendor/local/lib/libgnutls.dll.a +0 -0
- data/vendor/local/lib/libgnutls.la +2 -2
- data/vendor/local/lib/libgobject-2.0.dll.a +0 -0
- data/vendor/local/lib/libgobject-2.0.la +6 -6
- data/vendor/local/lib/libgthread-2.0.dll.a +0 -0
- data/vendor/local/lib/libgthread-2.0.la +6 -6
- data/vendor/local/lib/libhogweed.a +0 -0
- data/vendor/local/lib/libhogweed.dll.a +0 -0
- data/vendor/local/lib/libiconv.dll.a +0 -0
- data/vendor/local/lib/libiconv.la +2 -2
- data/vendor/local/lib/libidn2.a +0 -0
- data/vendor/local/lib/libidn2.dll.a +0 -0
- data/vendor/local/lib/libidn2.la +41 -0
- data/vendor/local/lib/libintl.a +0 -0
- data/vendor/local/lib/libintl.dll.a +0 -0
- data/vendor/local/lib/libintl.la +2 -2
- data/vendor/local/lib/libnettle.a +0 -0
- data/vendor/local/lib/libnettle.dll.a +0 -0
- data/vendor/local/lib/libp11-kit.dll.a +0 -0
- data/vendor/local/lib/libp11-kit.la +6 -6
- data/vendor/local/lib/libpcre.a +0 -0
- data/vendor/local/lib/libpcre.dll.a +0 -0
- data/vendor/local/lib/libpcre.la +2 -2
- data/vendor/local/lib/libpcrecpp.a +0 -0
- data/vendor/local/lib/libpcrecpp.dll.a +0 -0
- data/vendor/local/lib/libpcrecpp.la +2 -2
- data/vendor/local/lib/libpcreposix.a +0 -0
- data/vendor/local/lib/libpcreposix.dll.a +0 -0
- data/vendor/local/lib/libpcreposix.la +2 -2
- data/vendor/local/lib/libtasn1.a +0 -0
- data/vendor/local/lib/libtasn1.dll.a +0 -0
- data/vendor/local/lib/libtasn1.la +3 -3
- data/vendor/local/lib/pkcs11/p11-kit-trust.dll +0 -0
- data/vendor/local/lib/pkcs11/p11-kit-trust.dll.a +0 -0
- data/vendor/local/lib/pkcs11/p11-kit-trust.la +6 -6
- data/vendor/local/lib/pkgconfig/gio-2.0.pc +3 -3
- data/vendor/local/lib/pkgconfig/gio-windows-2.0.pc +2 -2
- data/vendor/local/lib/pkgconfig/glib-2.0.pc +3 -3
- data/vendor/local/lib/pkgconfig/gmodule-2.0.pc +2 -2
- data/vendor/local/lib/pkgconfig/gmodule-export-2.0.pc +2 -2
- data/vendor/local/lib/pkgconfig/gmodule-no-export-2.0.pc +2 -2
- data/vendor/local/lib/pkgconfig/gnutls.pc +3 -3
- data/vendor/local/lib/pkgconfig/gobject-2.0.pc +3 -3
- data/vendor/local/lib/pkgconfig/gthread-2.0.pc +2 -2
- data/vendor/local/lib/pkgconfig/hogweed.pc +1 -1
- data/vendor/local/lib/pkgconfig/libffi.pc +1 -1
- data/vendor/local/lib/pkgconfig/libidn2.pc +11 -0
- data/vendor/local/lib/pkgconfig/libpcre.pc +1 -1
- data/vendor/local/lib/pkgconfig/libpcrecpp.pc +1 -1
- data/vendor/local/lib/pkgconfig/libpcreposix.pc +1 -1
- data/vendor/local/lib/pkgconfig/libtasn1.pc +2 -2
- data/vendor/local/lib/pkgconfig/nettle.pc +1 -1
- data/vendor/local/lib/pkgconfig/p11-kit-1.pc +3 -2
- data/vendor/local/libexec/p11-kit/p11-kit-remote.exe +0 -0
- data/vendor/local/{lib → libexec}/p11-kit/trust-extract-compat +0 -0
- data/vendor/local/share/aclocal/glib-2.0.m4 +4 -1
- data/vendor/local/share/aclocal/glib-gettext.m4 +4 -1
- data/vendor/local/share/aclocal/gsettings.m4 +3 -0
- data/vendor/local/share/bash-completion/completions/gsettings +6 -2
- data/vendor/local/share/doc/gettext/gettext.1.html +1 -1
- data/vendor/local/share/doc/gettext/ngettext.1.html +1 -1
- data/vendor/local/share/gdb/auto-load/home/vagrant/{ruby-gnome2.win32/glib2/vendor/local/lib/libglib-2.0.so.0.5400.1-gdb.py → ruby-gnome2/glib2/vendor/local/lib/libglib-2.0.so.0.5600.0-gdb.py} +1 -1
- data/vendor/local/share/gdb/auto-load/home/vagrant/{ruby-gnome2.win32/glib2/vendor/local/lib/libgobject-2.0.so.0.5400.1-gdb.py → ruby-gnome2/glib2/vendor/local/lib/libgobject-2.0.so.0.5600.0-gdb.py} +1 -1
- data/vendor/local/share/glib-2.0/codegen/__init__.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/__init__.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen.py +2392 -2369
- data/vendor/local/share/glib-2.0/codegen/codegen.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.py +3 -5
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_docbook.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_main.py +100 -55
- data/vendor/local/share/glib-2.0/codegen/codegen_main.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/codegen_main.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/config.py +1 -1
- data/vendor/local/share/glib-2.0/codegen/config.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/config.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/dbustypes.py +9 -2
- data/vendor/local/share/glib-2.0/codegen/dbustypes.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/dbustypes.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/parser.py +3 -2
- data/vendor/local/share/glib-2.0/codegen/parser.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/parser.pyo +0 -0
- data/vendor/local/share/glib-2.0/codegen/utils.py +40 -0
- data/vendor/local/share/glib-2.0/codegen/utils.pyc +0 -0
- data/vendor/local/share/glib-2.0/codegen/utils.pyo +0 -0
- data/vendor/local/share/glib-2.0/schemas/gschema.dtd +3 -2
- data/vendor/local/share/gtk-doc/html/gio/GAction.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GActionGroup.html +14 -14
- data/vendor/local/share/gtk-doc/html/gio/GActionMap.html +31 -31
- data/vendor/local/share/gtk-doc/html/gio/GAppInfo.html +71 -68
- data/vendor/local/share/gtk-doc/html/gio/GAppInfoMonitor.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GApplication.html +162 -25
- data/vendor/local/share/gtk-doc/html/gio/GApplicationCommandLine.html +87 -89
- data/vendor/local/share/gtk-doc/html/gio/GAsyncInitable.html +74 -74
- data/vendor/local/share/gtk-doc/html/gio/GAsyncResult.html +58 -49
- data/vendor/local/share/gtk-doc/html/gio/GBufferedInputStream.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GBufferedOutputStream.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GBytesIcon.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GCancellable.html +27 -27
- data/vendor/local/share/gtk-doc/html/gio/GCharsetConverter.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GConverter.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GCredentials.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GDBusActionGroup.html +7 -5
- data/vendor/local/share/gtk-doc/html/gio/GDBusAuthObserver.html +22 -22
- data/vendor/local/share/gtk-doc/html/gio/GDBusConnection.html +148 -141
- data/vendor/local/share/gtk-doc/html/gio/GDBusInterface.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GDBusInterfaceSkeleton.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GDBusMenuModel.html +7 -5
- data/vendor/local/share/gtk-doc/html/gio/GDBusMessage.html +40 -40
- data/vendor/local/share/gtk-doc/html/gio/GDBusMethodInvocation.html +26 -26
- data/vendor/local/share/gtk-doc/html/gio/GDBusObject.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManager.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManagerClient.html +25 -24
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectManagerServer.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectProxy.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GDBusObjectSkeleton.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GDBusProxy.html +87 -73
- data/vendor/local/share/gtk-doc/html/gio/GDBusServer.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GDataInputStream.html +55 -38
- data/vendor/local/share/gtk-doc/html/gio/GDataOutputStream.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GDatagramBased.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GDrive.html +20 -20
- data/vendor/local/share/gtk-doc/html/gio/GDtlsClientConnection.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GDtlsConnection.html +16 -16
- data/vendor/local/share/gtk-doc/html/gio/GDtlsServerConnection.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GEmblem.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GEmblemedIcon.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GFile.html +503 -218
- data/vendor/local/share/gtk-doc/html/gio/GFileDescriptorBased.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GFileEnumerator.html +31 -31
- data/vendor/local/share/gtk-doc/html/gio/GFileIOStream.html +8 -8
- data/vendor/local/share/gtk-doc/html/gio/GFileIcon.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GFileInfo.html +20 -20
- data/vendor/local/share/gtk-doc/html/gio/GFileInputStream.html +8 -8
- data/vendor/local/share/gtk-doc/html/gio/GFileMonitor.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GFileOutputStream.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GFilenameCompleter.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GFilterInputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GFilterOutputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GIOModule.html +32 -11
- data/vendor/local/share/gtk-doc/html/gio/GIOStream.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GIcon.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GInetAddress.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GInetAddressMask.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GInetSocketAddress.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GInitable.html +8 -8
- data/vendor/local/share/gtk-doc/html/gio/GInputStream.html +30 -30
- data/vendor/local/share/gtk-doc/html/gio/GListModel.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GListStore.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GLoadableIcon.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GMemoryInputStream.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GMemoryOutputStream.html +15 -15
- data/vendor/local/share/gtk-doc/html/gio/GMenu.html +57 -57
- data/vendor/local/share/gtk-doc/html/gio/GMenuModel.html +14 -14
- data/vendor/local/share/gtk-doc/html/gio/GMount.html +31 -29
- data/vendor/local/share/gtk-doc/html/gio/GMountOperation.html +9 -9
- data/vendor/local/share/gtk-doc/html/gio/GNetworkAddress.html +9 -9
- data/vendor/local/share/gtk-doc/html/gio/GNetworkMonitor.html +12 -18
- data/vendor/local/share/gtk-doc/html/gio/GNetworkService.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GNotification.html +12 -8
- data/vendor/local/share/gtk-doc/html/gio/GOutputStream.html +40 -40
- data/vendor/local/share/gtk-doc/html/gio/GPermission.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GPollableInputStream.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GPollableOutputStream.html +11 -7
- data/vendor/local/share/gtk-doc/html/gio/GPropertyAction.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GProxy.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GProxyAddress.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GProxyAddressEnumerator.html +170 -0
- data/vendor/local/share/gtk-doc/html/gio/GProxyResolver.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GRemoteActionGroup.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GResolver.html +25 -25
- data/vendor/local/share/gtk-doc/html/gio/GResource.html +37 -33
- data/vendor/local/share/gtk-doc/html/gio/GSeekable.html +16 -9
- data/vendor/local/share/gtk-doc/html/gio/GSettings.html +99 -96
- data/vendor/local/share/gtk-doc/html/gio/GSettingsBackend.html +17 -17
- data/vendor/local/share/gtk-doc/html/gio/GSimpleAction.html +18 -18
- data/vendor/local/share/gtk-doc/html/gio/GSimpleActionGroup.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GSimpleAsyncResult.html +107 -106
- data/vendor/local/share/gtk-doc/html/gio/GSimpleIOStream.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GSimplePermission.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GSimpleProxyResolver.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GSocket.html +209 -53
- data/vendor/local/share/gtk-doc/html/gio/GSocketAddress.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GSocketAddressEnumerator.html +291 -0
- data/vendor/local/share/gtk-doc/html/gio/GSocketClient.html +31 -31
- data/vendor/local/share/gtk-doc/html/gio/GSocketConnectable.html +67 -344
- data/vendor/local/share/gtk-doc/html/gio/GSocketConnection.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GSocketControlMessage.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GSocketListener.html +23 -23
- data/vendor/local/share/gtk-doc/html/gio/GSocketService.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GSrvTarget.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GSubprocess.html +33 -33
- data/vendor/local/share/gtk-doc/html/gio/GSubprocessLauncher.html +25 -20
- data/vendor/local/share/gtk-doc/html/gio/GTask.html +360 -357
- data/vendor/local/share/gtk-doc/html/gio/GTcpConnection.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GTcpWrapperConnection.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GTestDBus.html +11 -11
- data/vendor/local/share/gtk-doc/html/gio/GThemedIcon.html +23 -23
- data/vendor/local/share/gtk-doc/html/gio/GThreadedSocketService.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/GTlsBackend.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/GTlsCertificate.html +10 -10
- data/vendor/local/share/gtk-doc/html/gio/GTlsClientConnection.html +40 -23
- data/vendor/local/share/gtk-doc/html/gio/GTlsConnection.html +9 -9
- data/vendor/local/share/gtk-doc/html/gio/GTlsDatabase.html +34 -34
- data/vendor/local/share/gtk-doc/html/gio/GTlsFileDatabase.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GTlsInteraction.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GTlsPassword.html +9 -9
- data/vendor/local/share/gtk-doc/html/gio/GTlsServerConnection.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GUnixConnection.html +17 -17
- data/vendor/local/share/gtk-doc/html/gio/GUnixCredentialsMessage.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GUnixFDList.html +8 -8
- data/vendor/local/share/gtk-doc/html/gio/GUnixFDMessage.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/GUnixInputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GUnixOutputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/GUnixSocketAddress.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/GVfs.html +15 -15
- data/vendor/local/share/gtk-doc/html/gio/GVolume.html +27 -27
- data/vendor/local/share/gtk-doc/html/gio/GVolumeMonitor.html +12 -10
- data/vendor/local/share/gtk-doc/html/gio/GZlibCompressor.html +4 -4
- data/vendor/local/share/gtk-doc/html/gio/GZlibDecompressor.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/annotation-glossary.html +10 -3
- data/vendor/local/share/gtk-doc/html/gio/api-index-full.html +71 -11
- data/vendor/local/share/gtk-doc/html/gio/application.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/async.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch01.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch03.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch32.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch33.html +31 -31
- data/vendor/local/share/gtk-doc/html/gio/ch33s02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch33s03.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s03.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s04.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s05.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s06.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch34s07.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch35.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch35s02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/ch35s03.html +60 -60
- data/vendor/local/share/gtk-doc/html/gio/ch35s04.html +15 -15
- data/vendor/local/share/gtk-doc/html/gio/conversion.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/data-models.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/extending-gio.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/extending.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/failable_initialization.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/file_mon.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/file_ops.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gapplication-tool.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gdbus-codegen.html +285 -199
- data/vendor/local/share/gtk-doc/html/gio/gdbus-convenience.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gdbus-example-gdbus-codegen.html +9 -9
- data/vendor/local/share/gtk-doc/html/gio/gdbus-lowlevel.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gdbus.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Addresses.html +15 -13
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +23 -23
- data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Utilities.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html +70 -21
- data/vendor/local/share/gtk-doc/html/gio/gio-Extension-Points.html +18 -18
- data/vendor/local/share/gtk-doc/html/gio/gio-GActionGroup-exporter.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gio-GContentType.html +12 -12
- data/vendor/local/share/gtk-doc/html/gio/gio-GConverterInputstream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-GConverterOutputstream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-GDBusError.html +39 -39
- data/vendor/local/share/gtk-doc/html/gio/gio-GFileAttribute.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-GIOError.html +7 -7
- data/vendor/local/share/gtk-doc/html/gio/gio-GIOScheduler.html +5 -5
- data/vendor/local/share/gtk-doc/html/gio/gio-GMenuModel-exporter.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gio-GSettingsSchema-GSettingsSchemaSource.html +58 -58
- data/vendor/local/share/gtk-doc/html/gio/gio-GWin32InputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-GWin32OutputStream.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-GWin32RegistryKey.html +127 -127
- data/vendor/local/share/gtk-doc/html/gio/gio-Owning-Bus-Names.html +14 -14
- data/vendor/local/share/gtk-doc/html/gio/gio-TLS-Overview.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gio-Unix-Mounts.html +114 -24
- data/vendor/local/share/gtk-doc/html/gio/gio-Watching-Bus-Names.html +13 -13
- data/vendor/local/share/gtk-doc/html/gio/gio-gnetworking.h.html +3 -3
- data/vendor/local/share/gtk-doc/html/gio/gio-gpollableutils.html +14 -14
- data/vendor/local/share/gtk-doc/html/gio/gio-hierarchy.html +6 -6
- data/vendor/local/share/gtk-doc/html/gio/gio-querymodules.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gio.devhelp2 +31 -14
- data/vendor/local/share/gtk-doc/html/gio/gio.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/glib-compile-resources.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/glib-compile-schemas.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gresource-tool.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/gsettings-tool.html +5 -4
- data/vendor/local/share/gtk-doc/html/gio/highlevel-socket.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/icons.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/index.html +9 -3
- data/vendor/local/share/gtk-doc/html/gio/migrating.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/networking.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/permissions.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/pt01.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/pt02.html +8 -2
- data/vendor/local/share/gtk-doc/html/gio/registry.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/resolver.html +8 -2
- data/vendor/local/share/gtk-doc/html/gio/resources.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/running-gio-apps.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/settings.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/streaming.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/subprocesses.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/testing.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/tls.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/tools.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/types.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/utils.html +2 -2
- data/vendor/local/share/gtk-doc/html/gio/volume_mon.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/annotation-glossary.html +6 -4
- data/vendor/local/share/gtk-doc/html/glib/api-index-full.html +47 -3
- data/vendor/local/share/gtk-doc/html/glib/deprecated.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Arrays.html +25 -23
- data/vendor/local/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html +7 -7
- data/vendor/local/share/gtk-doc/html/glib/glib-Atomic-Operations.html +11 -11
- data/vendor/local/share/gtk-doc/html/glib/glib-Automatic-String-Completion.html +7 -7
- data/vendor/local/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html +5 -5
- data/vendor/local/share/gtk-doc/html/glib/glib-Base64-Encoding.html +23 -21
- data/vendor/local/share/gtk-doc/html/glib/glib-Basic-Types.html +19 -15
- data/vendor/local/share/gtk-doc/html/glib/glib-Bookmark-file-parser.html +36 -32
- data/vendor/local/share/gtk-doc/html/glib/glib-Bounds-checked-integer-arithmetic.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Arrays.html +55 -43
- data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Order-Macros.html +4 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-Caches.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html +169 -108
- data/vendor/local/share/gtk-doc/html/glib/glib-Commandline-option-parser.html +91 -91
- data/vendor/local/share/gtk-doc/html/glib/glib-Data-Checksums.html +6 -5
- data/vendor/local/share/gtk-doc/html/glib/glib-Data-HMACs.html +8 -7
- data/vendor/local/share/gtk-doc/html/glib/glib-Datasets.html +33 -23
- data/vendor/local/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +50 -10
- data/vendor/local/share/gtk-doc/html/glib/glib-Deprecated-Thread-APIs.html +56 -56
- data/vendor/local/share/gtk-doc/html/glib/glib-Double-ended-Queues.html +13 -6
- data/vendor/local/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html +45 -38
- data/vendor/local/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html +42 -42
- data/vendor/local/share/gtk-doc/html/glib/glib-Error-Reporting.html +116 -117
- data/vendor/local/share/gtk-doc/html/glib/glib-File-Utilities.html +57 -47
- data/vendor/local/share/gtk-doc/html/glib/glib-GDateTime.html +106 -12
- data/vendor/local/share/gtk-doc/html/glib/glib-GTimeZone.html +5 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-GUuid.html +4 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-GVariant.html +258 -249
- data/vendor/local/share/gtk-doc/html/glib/glib-GVariantType.html +26 -25
- data/vendor/local/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-Hash-Tables.html +52 -43
- data/vendor/local/share/gtk-doc/html/glib/glib-Hook-Functions.html +6 -5
- data/vendor/local/share/gtk-doc/html/glib/glib-Hostname-Utilities.html +3 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-I18N.html +51 -51
- data/vendor/local/share/gtk-doc/html/glib/glib-IO-Channels.html +20 -20
- data/vendor/local/share/gtk-doc/html/glib/glib-Key-value-file-parser.html +237 -50
- data/vendor/local/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html +57 -38
- data/vendor/local/share/gtk-doc/html/glib/glib-Lexical-Scanner.html +3 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Allocation.html +36 -30
- data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Slices.html +33 -33
- data/vendor/local/share/gtk-doc/html/glib/glib-Message-Logging.html +109 -70
- data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html +180 -74
- data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html +147 -91
- data/vendor/local/share/gtk-doc/html/glib/glib-N-ary-Trees.html +12 -8
- data/vendor/local/share/gtk-doc/html/glib/glib-Numerical-Definitions.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html +102 -102
- data/vendor/local/share/gtk-doc/html/glib/glib-Pointer-Arrays.html +24 -22
- data/vendor/local/share/gtk-doc/html/glib/glib-Quarks.html +8 -8
- data/vendor/local/share/gtk-doc/html/glib/glib-Random-Numbers.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-Sequences.html +43 -41
- data/vendor/local/share/gtk-doc/html/glib/glib-Shell-related-Utilities.html +16 -15
- data/vendor/local/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html +74 -74
- data/vendor/local/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html +26 -18
- data/vendor/local/share/gtk-doc/html/glib/glib-Spawning-Processes.html +88 -82
- data/vendor/local/share/gtk-doc/html/glib/glib-Standard-Macros.html +7 -7
- data/vendor/local/share/gtk-doc/html/glib/glib-String-Chunks.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/glib-String-Utility-Functions.html +48 -41
- data/vendor/local/share/gtk-doc/html/glib/glib-Strings.html +29 -29
- data/vendor/local/share/gtk-doc/html/glib/glib-Testing.html +264 -124
- data/vendor/local/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html +284 -180
- data/vendor/local/share/gtk-doc/html/glib/glib-Thread-Pools.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Threads.html +192 -191
- data/vendor/local/share/gtk-doc/html/glib/glib-Timers.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-Trash-Stacks.html +4 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +12 -12
- data/vendor/local/share/gtk-doc/html/glib/glib-UNIX-specific-utilities-and-integration.html +4 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-URI-Functions.html +14 -13
- data/vendor/local/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html +49 -37
- data/vendor/local/share/gtk-doc/html/glib/glib-Version-Information.html +43 -4
- data/vendor/local/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html +46 -26
- data/vendor/local/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html +10 -10
- data/vendor/local/share/gtk-doc/html/glib/glib-building.html +108 -99
- data/vendor/local/share/gtk-doc/html/glib/glib-changes.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-compiling.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-core.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-cross-compiling.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-data-types.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-fundamentals.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-gettextize.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-programming.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-regex-syntax.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-resources.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-running.html +7 -2
- data/vendor/local/share/gtk-doc/html/glib/glib-utilities.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/glib.devhelp2 +16 -2
- data/vendor/local/share/gtk-doc/html/glib/glib.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/gtester-report.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/gtester.html +2 -2
- data/vendor/local/share/gtk-doc/html/glib/gvariant-format-strings.html +157 -157
- data/vendor/local/share/gtk-doc/html/glib/gvariant-text.html +9 -9
- data/vendor/local/share/gtk-doc/html/glib/index.html +3 -3
- data/vendor/local/share/gtk-doc/html/glib/tools.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/GBinding.html +35 -34
- data/vendor/local/share/gtk-doc/html/gobject/GTypeModule.html +71 -60
- data/vendor/local/share/gtk-doc/html/gobject/GTypePlugin.html +7 -7
- data/vendor/local/share/gtk-doc/html/gobject/annotation-glossary.html +4 -2
- data/vendor/local/share/gtk-doc/html/gobject/api-index-full.html +10 -2
- data/vendor/local/share/gtk-doc/html/gobject/ch01s02.html +15 -15
- data/vendor/local/share/gtk-doc/html/gobject/chapter-gobject.html +32 -32
- data/vendor/local/share/gtk-doc/html/gobject/chapter-gtype.html +64 -64
- data/vendor/local/share/gtk-doc/html/gobject/chapter-intro.html +4 -4
- data/vendor/local/share/gtk-doc/html/gobject/chapter-signal.html +24 -24
- data/vendor/local/share/gtk-doc/html/gobject/glib-genmarshal.html +98 -21
- data/vendor/local/share/gtk-doc/html/gobject/glib-mkenums.html +349 -61
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html +21 -21
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Closures.html +164 -162
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html +31 -31
- data/vendor/local/share/gtk-doc/html/gobject/gobject-GParamSpec.html +12 -12
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Generic-values.html +51 -49
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Signals.html +67 -65
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Standard-Parameter-and-Value-Types.html +55 -52
- data/vendor/local/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html +392 -222
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Type-Information.html +254 -254
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Value-arrays.html +20 -19
- data/vendor/local/share/gtk-doc/html/gobject/gobject-Varargs-Value-Collection.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/gobject-memory.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/gobject-properties.html +91 -91
- data/vendor/local/share/gtk-doc/html/gobject/gobject-query.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/gobject.devhelp2 +2 -0
- data/vendor/local/share/gtk-doc/html/gobject/gtype-conventions.html +18 -18
- data/vendor/local/share/gtk-doc/html/gobject/gtype-instantiable-classed.html +72 -72
- data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable-classed.html +117 -117
- data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable.html +26 -26
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-chainup.html +10 -10
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-code.html +14 -14
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-construction.html +46 -46
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-destruction.html +42 -42
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-methods.html +134 -134
- data/vendor/local/share/gtk-doc/html/gobject/howto-gobject.html +29 -29
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-implement.html +39 -39
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-override.html +72 -72
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-prerequisite.html +61 -61
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface-properties.html +67 -67
- data/vendor/local/share/gtk-doc/html/gobject/howto-interface.html +64 -64
- data/vendor/local/share/gtk-doc/html/gobject/howto-signals.html +27 -27
- data/vendor/local/share/gtk-doc/html/gobject/index.html +3 -3
- data/vendor/local/share/gtk-doc/html/gobject/pr01.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/pt01.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/pt02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/pt03.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/rn01.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/rn02.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/signal.html +19 -19
- data/vendor/local/share/gtk-doc/html/gobject/tools-ginspector.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/tools-gob.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/tools-gtkdoc.html +9 -9
- data/vendor/local/share/gtk-doc/html/gobject/tools-refdb.html +2 -2
- data/vendor/local/share/gtk-doc/html/gobject/tools-vala.html +2 -2
- data/vendor/local/share/gtk-doc/html/libidn2/api-index-full.html +214 -0
- data/vendor/local/share/gtk-doc/html/libidn2/home.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/index.html +38 -0
- data/vendor/local/share/gtk-doc/html/libidn2/left-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/left.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/libidn2-idn2.html +1806 -0
- data/vendor/local/share/gtk-doc/html/libidn2/libidn2.devhelp2 +104 -0
- data/vendor/local/share/gtk-doc/html/libidn2/libidn2.html +35 -0
- data/vendor/local/share/gtk-doc/html/libidn2/right-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/right.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/style.css +479 -0
- data/vendor/local/share/gtk-doc/html/libidn2/up-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/libidn2/up.png +0 -0
- data/vendor/local/share/gtk-doc/html/p11-kit/config-example.html +7 -7
- data/vendor/local/share/gtk-doc/html/p11-kit/config-files.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/config.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-building-style.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-building.html +4 -4
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-commands.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-debugging.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-paths.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel-testing.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/devel.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/index.html +4 -4
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-Deprecated.html +44 -44
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-Future.html +180 -90
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-Modules.html +107 -66
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-PIN-Callbacks.html +58 -58
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-URIs.html +303 -64
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit-Utilities.html +17 -17
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit.devhelp2 +10 -0
- data/vendor/local/share/gtk-doc/html/p11-kit/p11-kit.html +7 -5
- data/vendor/local/share/gtk-doc/html/p11-kit/pkcs11-conf.html +6 -6
- data/vendor/local/share/gtk-doc/html/p11-kit/reference.html +39 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/sharing-managed.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/sharing.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/tools.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/trust-disable.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/trust-glib-networking.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/trust-module.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/trust-nss.html +3 -3
- data/vendor/local/share/gtk-doc/html/p11-kit/trust.html +3 -3
- data/vendor/local/share/info/dir +4 -7
- data/vendor/local/share/info/libidn2.info +1134 -0
- data/vendor/local/share/info/libtasn1.info +2 -2
- data/vendor/local/share/installed-tests/glib-networking/certificate.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/connection.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/dtls-connection.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/file-database.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/pkcs11-array.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/pkcs11-pin.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/pkcs11-slot.test +3 -0
- data/vendor/local/share/installed-tests/glib-networking/pkcs11-util.test +3 -0
- data/vendor/local/share/license/glib-networking/COPYING +112 -91
- data/vendor/local/share/license/libidn2/AUTHORS +7 -0
- data/vendor/local/share/license/libidn2/COPYING +35 -0
- data/vendor/local/share/license/{p11-kit → p11-glue/p11-kit}/AUTHORS +0 -0
- data/vendor/local/share/license/{p11-kit → p11-glue/p11-kit}/COPYING +0 -0
- data/vendor/local/share/locale/af/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/an/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/an/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ar/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ar/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/as/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/as/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/be/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/be/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bg/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/bg/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bn_IN/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/bn_IN/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/bs/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/bs/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ca/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ca/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/cs/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/cs/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/da/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/da/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/el/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/el/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/en_CA/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/en_CA/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/en_GB/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/en_GB/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/eo/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/eo/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/es/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/es/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/et/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/et/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/eu/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/eu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fa/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fa/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/fur/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/fur/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ga/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/gd/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/gd/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/gl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/gl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/gu/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/gu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/he/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/he/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/hi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/hr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/hu/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/hu/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/id/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/id/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/is/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/kk/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/kk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/km/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/kn/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/kn/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ko/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ko/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/lt/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/lt/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/lv/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/lv/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ml/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ml/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/mr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/mr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/nb/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/nb/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ne/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ne/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/oc/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/oc/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/or/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/or/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pa/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pa/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pt/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pt/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/pt_BR/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/pt_BR/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ro/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ro/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ru/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ru/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sk/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sl/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sl/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sr@latin/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sr@latin/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/sv/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/sv/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ta/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ta/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/te/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/te/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/tg/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/tg/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/th/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/th/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/tr/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/tr/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/ug/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/ug/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_HK/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_HK/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/locale/zh_TW/LC_MESSAGES/glib-networking.mo +0 -0
- data/vendor/local/share/locale/zh_TW/LC_MESSAGES/glib20.mo +0 -0
- data/vendor/local/share/man/man1/asn1Coding.1 +1 -1
- data/vendor/local/share/man/man1/asn1Decoding.1 +1 -1
- data/vendor/local/share/man/man1/asn1Parser.1 +1 -1
- data/vendor/local/share/man/man1/gapplication.1 +1 -1
- data/vendor/local/share/man/man1/gdbus-codegen.1 +107 -17
- data/vendor/local/share/man/man1/gdbus.1 +1 -1
- data/vendor/local/share/man/man1/gettext.1 +1 -1
- data/vendor/local/share/man/man1/gio-querymodules.1 +1 -1
- data/vendor/local/share/man/man1/gio.1 +1 -1
- data/vendor/local/share/man/man1/glib-compile-resources.1 +1 -1
- data/vendor/local/share/man/man1/glib-compile-schemas.1 +1 -1
- data/vendor/local/share/man/man1/glib-genmarshal.1 +55 -1
- data/vendor/local/share/man/man1/glib-gettextize.1 +1 -1
- data/vendor/local/share/man/man1/glib-mkenums.1 +241 -23
- data/vendor/local/share/man/man1/gobject-query.1 +1 -1
- data/vendor/local/share/man/man1/gresource.1 +1 -1
- data/vendor/local/share/man/man1/gsettings.1 +5 -3
- data/vendor/local/share/man/man1/gtester-report.1 +1 -1
- data/vendor/local/share/man/man1/gtester.1 +1 -1
- data/vendor/local/share/man/man1/idn2.1 +72 -0
- data/vendor/local/share/man/man1/ngettext.1 +1 -1
- data/vendor/local/share/man/man3/idn2_check_version.3 +40 -0
- data/vendor/local/share/man/man3/idn2_free.3 +33 -0
- data/vendor/local/share/man/man3/idn2_lookup_u8.3 +62 -0
- data/vendor/local/share/man/man3/idn2_lookup_ul.3 +55 -0
- data/vendor/local/share/man/man3/idn2_register_u8.3 +52 -0
- data/vendor/local/share/man/man3/idn2_register_ul.3 +51 -0
- data/vendor/local/share/man/man3/idn2_strerror.3 +32 -0
- data/vendor/local/share/man/man3/idn2_strerror_name.3 +36 -0
- data/vendor/local/share/man/man3/idn2_to_ascii_4i.3 +57 -0
- data/vendor/local/share/man/man3/idn2_to_ascii_4z.3 +42 -0
- data/vendor/local/share/man/man3/idn2_to_ascii_8z.3 +42 -0
- data/vendor/local/share/man/man3/idn2_to_ascii_lz.3 +43 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_44i.3 +46 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_4z4z.3 +39 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_8z4z.3 +39 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_8z8z.3 +39 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_8zlz.3 +40 -0
- data/vendor/local/share/man/man3/idn2_to_unicode_lzlz.3 +40 -0
- data/vendor/local/share/p11-kit/modules/p11-kit-trust.module +1 -1
- metadata +64 -105
- data/vendor/local/bin/idn.exe +0 -0
- data/vendor/local/bin/libidn-11.def +0 -77
- data/vendor/local/bin/libidn-11.dll +0 -0
- data/vendor/local/include/idn-free.h +0 -74
- data/vendor/local/include/idn-int.h +0 -1
- data/vendor/local/include/idna.h +0 -123
- data/vendor/local/include/pr29.h +0 -73
- data/vendor/local/include/punycode.h +0 -239
- data/vendor/local/include/stringprep.h +0 -242
- data/vendor/local/include/tld.h +0 -135
- data/vendor/local/lib/gio/modules/libgiognutls.a +0 -0
- data/vendor/local/lib/gio/modules/libgiognutls.dll.a +0 -0
- data/vendor/local/lib/gio/modules/libgiognutls.la +0 -41
- data/vendor/local/lib/libidn.a +0 -0
- data/vendor/local/lib/libidn.dll.a +0 -0
- data/vendor/local/lib/libidn.la +0 -41
- data/vendor/local/lib/p11-kit/p11-kit-remote.exe +0 -0
- data/vendor/local/lib/pkgconfig/libidn.pc +0 -23
- data/vendor/local/share/emacs/site-lisp/idna.el +0 -192
- data/vendor/local/share/emacs/site-lisp/punycode.el +0 -182
- data/vendor/local/share/gtk-doc/html/p11-kit/index.sgml +0 -189
- data/vendor/local/share/info/libidn-components.png +0 -0
- data/vendor/local/share/info/libidn.info +0 -4406
- data/vendor/local/share/license/glib-networking/AUTHORS +0 -0
- data/vendor/local/share/license/libidn/AUTHORS +0 -794
- data/vendor/local/share/license/libidn/COPYING +0 -30
- data/vendor/local/share/locale/cs/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/da/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/de/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/en@boldquot/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/en@quot/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/eo/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/fi/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/fr/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/hr/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/hu/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/id/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/it/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/nl/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/pt_BR/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/ro/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/sr/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/uk/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/vi/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/libidn.mo +0 -0
- data/vendor/local/share/man/man1/idn.1 +0 -92
- data/vendor/local/share/man/man3/idn_free.3 +0 -49
- data/vendor/local/share/man/man3/idna_strerror.3 +0 -80
- data/vendor/local/share/man/man3/idna_to_ascii_4i.3 +0 -70
- data/vendor/local/share/man/man3/idna_to_ascii_4z.3 +0 -51
- data/vendor/local/share/man/man3/idna_to_ascii_8z.3 +0 -51
- data/vendor/local/share/man/man3/idna_to_ascii_lz.3 +0 -52
- data/vendor/local/share/man/man3/idna_to_unicode_44i.3 +0 -75
- data/vendor/local/share/man/man3/idna_to_unicode_4z4z.3 +0 -52
- data/vendor/local/share/man/man3/idna_to_unicode_8z4z.3 +0 -52
- data/vendor/local/share/man/man3/idna_to_unicode_8z8z.3 +0 -52
- data/vendor/local/share/man/man3/idna_to_unicode_8zlz.3 +0 -53
- data/vendor/local/share/man/man3/idna_to_unicode_lzlz.3 +0 -54
- data/vendor/local/share/man/man3/pr29_4.3 +0 -51
- data/vendor/local/share/man/man3/pr29_4z.3 +0 -49
- data/vendor/local/share/man/man3/pr29_8z.3 +0 -50
- data/vendor/local/share/man/man3/pr29_strerror.3 +0 -55
- data/vendor/local/share/man/man3/punycode_decode.3 +0 -73
- data/vendor/local/share/man/man3/punycode_encode.3 +0 -76
- data/vendor/local/share/man/man3/punycode_strerror.3 +0 -56
- data/vendor/local/share/man/man3/stringprep.3 +0 -65
- data/vendor/local/share/man/man3/stringprep_4i.3 +0 -70
- data/vendor/local/share/man/man3/stringprep_4zi.3 +0 -62
- data/vendor/local/share/man/man3/stringprep_check_version.3 +0 -50
- data/vendor/local/share/man/man3/stringprep_convert.3 +0 -50
- data/vendor/local/share/man/man3/stringprep_locale_charset.3 +0 -57
- data/vendor/local/share/man/man3/stringprep_locale_to_utf8.3 +0 -46
- data/vendor/local/share/man/man3/stringprep_profile.3 +0 -63
- data/vendor/local/share/man/man3/stringprep_strerror.3 +0 -86
- data/vendor/local/share/man/man3/stringprep_ucs4_nfkc_normalize.3 +0 -48
- data/vendor/local/share/man/man3/stringprep_ucs4_to_utf8.3 +0 -56
- data/vendor/local/share/man/man3/stringprep_unichar_to_utf8.3 +0 -48
- data/vendor/local/share/man/man3/stringprep_utf8_nfkc_normalize.3 +0 -59
- data/vendor/local/share/man/man3/stringprep_utf8_to_locale.3 +0 -46
- data/vendor/local/share/man/man3/stringprep_utf8_to_ucs4.3 +0 -54
- data/vendor/local/share/man/man3/stringprep_utf8_to_unichar.3 +0 -46
- data/vendor/local/share/man/man3/tld_check_4.3 +0 -62
- data/vendor/local/share/man/man3/tld_check_4t.3 +0 -58
- data/vendor/local/share/man/man3/tld_check_4tz.3 +0 -55
- data/vendor/local/share/man/man3/tld_check_4z.3 +0 -59
- data/vendor/local/share/man/man3/tld_check_8z.3 +0 -61
- data/vendor/local/share/man/man3/tld_check_lz.3 +0 -61
- data/vendor/local/share/man/man3/tld_default_table.3 +0 -51
- data/vendor/local/share/man/man3/tld_get_4.3 +0 -51
- data/vendor/local/share/man/man3/tld_get_4z.3 +0 -48
- data/vendor/local/share/man/man3/tld_get_table.3 +0 -49
- data/vendor/local/share/man/man3/tld_get_z.3 +0 -49
- data/vendor/local/share/man/man3/tld_strerror.3 +0 -60
Binary file
|
@@ -1,4406 +0,0 @@
|
|
1
|
-
This is libidn.info, produced by makeinfo version 5.2 from libidn.texi.
|
2
|
-
|
3
|
-
This manual is last updated 14 January 2016 for version 1.33 of GNU
|
4
|
-
Libidn.
|
5
|
-
|
6
|
-
Copyright © 2002-2016 Simon Josefsson.
|
7
|
-
|
8
|
-
Permission is granted to copy, distribute and/or modify this
|
9
|
-
document under the terms of the GNU Free Documentation License,
|
10
|
-
Version 1.3 or any later version published by the Free Software
|
11
|
-
Foundation; with no Invariant Sections, no Front-Cover Texts, and
|
12
|
-
no Back-Cover Texts. A copy of the license is included in the
|
13
|
-
section entitled “GNU Free Documentation License”.
|
14
|
-
INFO-DIR-SECTION Software libraries
|
15
|
-
START-INFO-DIR-ENTRY
|
16
|
-
* libidn: (libidn). Internationalized string processing library.
|
17
|
-
END-INFO-DIR-ENTRY
|
18
|
-
|
19
|
-
INFO-DIR-SECTION Localization
|
20
|
-
START-INFO-DIR-ENTRY
|
21
|
-
* idn: (libidn)Invoking idn. Internationalized Domain Name (IDN) string conversion.
|
22
|
-
END-INFO-DIR-ENTRY
|
23
|
-
|
24
|
-
INFO-DIR-SECTION Emacs
|
25
|
-
START-INFO-DIR-ENTRY
|
26
|
-
* IDN Library: (libidn)Emacs API. Emacs API for IDN functions.
|
27
|
-
END-INFO-DIR-ENTRY
|
28
|
-
|
29
|
-
|
30
|
-
File: libidn.info, Node: Top, Next: Introduction, Up: (dir)
|
31
|
-
|
32
|
-
GNU Libidn
|
33
|
-
**********
|
34
|
-
|
35
|
-
This manual is last updated 14 January 2016 for version 1.33 of GNU
|
36
|
-
Libidn.
|
37
|
-
|
38
|
-
Copyright © 2002-2016 Simon Josefsson.
|
39
|
-
|
40
|
-
Permission is granted to copy, distribute and/or modify this
|
41
|
-
document under the terms of the GNU Free Documentation License,
|
42
|
-
Version 1.3 or any later version published by the Free Software
|
43
|
-
Foundation; with no Invariant Sections, no Front-Cover Texts, and
|
44
|
-
no Back-Cover Texts. A copy of the license is included in the
|
45
|
-
section entitled “GNU Free Documentation License”.
|
46
|
-
|
47
|
-
* Menu:
|
48
|
-
|
49
|
-
* Introduction:: How to use this manual.
|
50
|
-
* Preparation:: What you should do before using the library.
|
51
|
-
* Utility Functions:: Unicode transformation utility functions.
|
52
|
-
* Stringprep Functions:: Stringprep functions.
|
53
|
-
* Punycode Functions:: Punycode functions.
|
54
|
-
* IDNA Functions:: IDNA functions.
|
55
|
-
* TLD Functions:: TLD functions.
|
56
|
-
* PR29 Functions:: Detect strings non-idempotent under NFKC.
|
57
|
-
* Examples:: Demonstrate how to use the library.
|
58
|
-
* Invoking idn:: Command line interface to the library.
|
59
|
-
* Emacs API:: Emacs Lisp API for Libidn.
|
60
|
-
* Java API:: Notes on the Java port of Libidn.
|
61
|
-
* C# API:: Notes on the C# port of Libidn.
|
62
|
-
* Acknowledgements:: Whom to blame.
|
63
|
-
* History:: Rough outline of development history.
|
64
|
-
|
65
|
-
Appendices
|
66
|
-
|
67
|
-
* PR29 discussion:: Implementation aspects of the PR29 flaw.
|
68
|
-
* On Label Separators:: Discussions of a flaw in the IDNA spec.
|
69
|
-
* Copying Information:: License texts.
|
70
|
-
|
71
|
-
Indices
|
72
|
-
|
73
|
-
* Function and Variable Index::
|
74
|
-
* Concept Index::
|
75
|
-
|
76
|
-
|
77
|
-
File: libidn.info, Node: Introduction, Next: Preparation, Prev: Top, Up: Top
|
78
|
-
|
79
|
-
1 Introduction
|
80
|
-
**************
|
81
|
-
|
82
|
-
GNU Libidn is a fully documented implementation of the Stringprep,
|
83
|
-
Punycode and IDNA specifications. Libidn’s purpose is to encode and
|
84
|
-
decode internationalized domain name strings. There are native C, C#
|
85
|
-
and Java libraries.
|
86
|
-
|
87
|
-
The C library contains a generic Stringprep implementation. Profiles
|
88
|
-
for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. Punycode
|
89
|
-
and ASCII Compatible Encoding (ACE) via IDNA are supported. A mechanism
|
90
|
-
to define Top-Level Domain (TLD) specific validation tables, and to
|
91
|
-
compare strings against those tables, is included. Default tables for
|
92
|
-
some TLDs are also included.
|
93
|
-
|
94
|
-
The Stringprep API consists of two main functions, one for converting
|
95
|
-
data from the system’s native representation into UTF-8, and one
|
96
|
-
function to perform the Stringprep processing. Adding a new Stringprep
|
97
|
-
profile for your application within the API is straightforward. The
|
98
|
-
Punycode API consists of one encoding function and one decoding
|
99
|
-
function. The IDNA API consists of the ToASCII and ToUnicode functions,
|
100
|
-
as well as an high-level interface for converting entire domain names to
|
101
|
-
and from the ACE encoded form. The TLD API consists of one set of
|
102
|
-
functions to extract the TLD name from a domain string, one set of
|
103
|
-
functions to locate the proper TLD table to use based on the TLD name,
|
104
|
-
and core functions to validate a string against a TLD table, and some
|
105
|
-
utility wrappers to perform all the steps in one call.
|
106
|
-
|
107
|
-
The library is used by, e.g., GNU SASL and Shishi to process user
|
108
|
-
names and passwords. Libidn can be built into GNU Libc to enable a new
|
109
|
-
system-wide getaddrinfo flag for IDN processing.
|
110
|
-
|
111
|
-
Libidn is developed for the GNU/Linux system, but runs on over 20
|
112
|
-
Unix platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
|
113
|
-
The library is written in C and (parts of) the API is also accessible
|
114
|
-
from C++, Emacs Lisp, Python and Java. A native Java and C# port is
|
115
|
-
included.
|
116
|
-
|
117
|
-
Also included is a command line tool, several self tests, code
|
118
|
-
examples, and more.
|
119
|
-
|
120
|
-
* Menu:
|
121
|
-
|
122
|
-
* Getting Started::
|
123
|
-
* Features::
|
124
|
-
* Library Overview::
|
125
|
-
* Supported Platforms::
|
126
|
-
* Getting help::
|
127
|
-
* Commercial Support::
|
128
|
-
* Downloading and Installing::
|
129
|
-
* Bug Reports::
|
130
|
-
* Contributing::
|
131
|
-
|
132
|
-
|
133
|
-
File: libidn.info, Node: Getting Started, Next: Features, Up: Introduction
|
134
|
-
|
135
|
-
1.1 Getting Started
|
136
|
-
===================
|
137
|
-
|
138
|
-
This manual documents the library programming interface. All functions
|
139
|
-
and data types provided by the library are explained. Included are also
|
140
|
-
examples, and documentation for the command line tool ‘idn’ that provide
|
141
|
-
a quick interface to the library. The Emacs Lisp bindings for the
|
142
|
-
library is also discussed.
|
143
|
-
|
144
|
-
The reader is assumed to possess basic familiarity with
|
145
|
-
internationalization concepts and network programming in C or C++.
|
146
|
-
|
147
|
-
This manual can be used in several ways. If read from the beginning
|
148
|
-
to the end, it gives a good introduction into the library and how it can
|
149
|
-
be used in an application. Forward references are included where
|
150
|
-
necessary. Later on, the manual can be used as a reference manual to
|
151
|
-
get just the information needed about any particular interface of the
|
152
|
-
library. Experienced programmers might want to start looking at the
|
153
|
-
examples at the end of the manual (*note Examples::), and then only read
|
154
|
-
up those parts of the interface which are unclear.
|
155
|
-
|
156
|
-
|
157
|
-
File: libidn.info, Node: Features, Next: Library Overview, Prev: Getting Started, Up: Introduction
|
158
|
-
|
159
|
-
1.2 Features
|
160
|
-
============
|
161
|
-
|
162
|
-
This library might have a couple of advantages over other libraries
|
163
|
-
doing a similar job.
|
164
|
-
|
165
|
-
It’s Free Software
|
166
|
-
Anybody can use, modify, and redistribute it under the terms of a
|
167
|
-
free software license.
|
168
|
-
|
169
|
-
It’s thread-safe
|
170
|
-
No global state is kept in the library. All functions are
|
171
|
-
re-entrant.
|
172
|
-
|
173
|
-
It’s portable
|
174
|
-
The code is intended to be written in pure ANSI C89. It has been
|
175
|
-
tested on many Unix like operating systems, and Windows.
|
176
|
-
|
177
|
-
It’s modularized
|
178
|
-
The library is composed of several modules, and the only
|
179
|
-
interaction between modules is through each modules’ public API. If
|
180
|
-
you only need one piece of functionality, it is possible to take
|
181
|
-
the files you need and incorporate them into your own project.
|
182
|
-
|
183
|
-
It’s not bloated
|
184
|
-
The design of the library is based on the smallest API necessary to
|
185
|
-
implement the basic functionality. It has been carefully extended
|
186
|
-
with a small number of high-level wrappers to make it comfortable
|
187
|
-
to use the library. However, it does not implement additional
|
188
|
-
functionality just for the sake of completeness.
|
189
|
-
|
190
|
-
It’s documented
|
191
|
-
Sadly, not all software comes with documentation these days. This
|
192
|
-
one does.
|
193
|
-
|
194
|
-
|
195
|
-
File: libidn.info, Node: Library Overview, Next: Supported Platforms, Prev: Features, Up: Introduction
|
196
|
-
|
197
|
-
1.3 Library Overview
|
198
|
-
====================
|
199
|
-
|
200
|
-
The following illustration show the components that make up Libidn, and
|
201
|
-
how your application relates to the library. In the illustration,
|
202
|
-
various components are shown as boxes. You see the generic StringPrep
|
203
|
-
component, the various StringPrep profiles including Nameprep, the
|
204
|
-
Punycode component, the IDNA component, and the TLD component. The
|
205
|
-
arrows indicate aggregation, e.g., IDNA uses Punycode and Nameprep, and
|
206
|
-
in turn Nameprep uses the generic StringPrep interface. The interfaces
|
207
|
-
to all components are available for applications, no component within
|
208
|
-
the library is hidden from the application.
|
209
|
-
|
210
|
-
[image src="libidn-components.png"]
|
211
|
-
|
212
|
-
|
213
|
-
File: libidn.info, Node: Supported Platforms, Next: Getting help, Prev: Library Overview, Up: Introduction
|
214
|
-
|
215
|
-
1.4 Supported Platforms
|
216
|
-
=======================
|
217
|
-
|
218
|
-
Libidn has at some point in time been tested on the following platforms.
|
219
|
-
Build reports for each platforms and Libidn version is available at
|
220
|
-
<http://autobuild.josefsson.org/libidn/>.
|
221
|
-
|
222
|
-
1. Debian GNU/Linux 3.0 (Woody)
|
223
|
-
|
224
|
-
GCC 2.95.4 and GNU Make. This is the main development platform.
|
225
|
-
‘alphaev67-unknown-linux-gnu’, ‘alphaev6-unknown-linux-gnu’,
|
226
|
-
‘arm-unknown-linux-gnu’, ‘armv4l-unknown-linux-gnu’,
|
227
|
-
‘hppa-unknown-linux-gnu’, ‘hppa64-unknown-linux-gnu’,
|
228
|
-
‘i686-pc-linux-gnu’, ‘ia64-unknown-linux-gnu’,
|
229
|
-
‘m68k-unknown-linux-gnu’, ‘mips-unknown-linux-gnu’,
|
230
|
-
‘mipsel-unknown-linux-gnu’, ‘powerpc-unknown-linux-gnu’,
|
231
|
-
‘s390-ibm-linux-gnu’, ‘sparc-unknown-linux-gnu’,
|
232
|
-
‘sparc64-unknown-linux-gnu’.
|
233
|
-
|
234
|
-
2. Debian GNU/Linux 2.1
|
235
|
-
|
236
|
-
GCC 2.95.1 and GNU Make. ‘armv4l-unknown-linux-gnu’.
|
237
|
-
|
238
|
-
3. Tru64 UNIX
|
239
|
-
|
240
|
-
Tru64 UNIX C compiler and Tru64 Make. ‘alphaev67-dec-osf5.1’,
|
241
|
-
‘alphaev68-dec-osf5.1’.
|
242
|
-
|
243
|
-
4. SuSE Linux 7.1
|
244
|
-
|
245
|
-
GCC 2.96 and GNU Make. ‘alphaev6-unknown-linux-gnu’,
|
246
|
-
‘alphaev67-unknown-linux-gnu’.
|
247
|
-
|
248
|
-
5. SuSE Linux 7.2a
|
249
|
-
|
250
|
-
GCC 3.0 and GNU Make. ‘ia64-unknown-linux-gnu’.
|
251
|
-
|
252
|
-
6. SuSE Linux
|
253
|
-
|
254
|
-
GCC 3.2.2 and GNU Make. ‘x86_64-unknown-linux-gnu’ (AMD64 Opteron
|
255
|
-
“Melody”).
|
256
|
-
|
257
|
-
7. SuSE Enterprise Server 9 on IBM OpenPower 720
|
258
|
-
|
259
|
-
GCC 3.3.3 and GNU Make. ‘powerpc64-unknown-linux-gnu’.
|
260
|
-
|
261
|
-
8. RedHat Linux 7.2
|
262
|
-
|
263
|
-
GCC 2.96 and GNU Make. ‘alphaev6-unknown-linux-gnu’,
|
264
|
-
‘alphaev67-unknown-linux-gnu’, ‘ia64-unknown-linux-gnu’.
|
265
|
-
|
266
|
-
9. RedHat Linux 8.0
|
267
|
-
|
268
|
-
GCC 3.2 and GNU Make. ‘i686-pc-linux-gnu’.
|
269
|
-
|
270
|
-
10. RedHat Advanced Server 2.1
|
271
|
-
|
272
|
-
GCC 2.96 and GNU Make. ‘i686-pc-linux-gnu’.
|
273
|
-
|
274
|
-
11. Slackware Linux 8.0.01
|
275
|
-
|
276
|
-
GCC 2.95.3 and GNU Make. ‘i686-pc-linux-gnu’.
|
277
|
-
|
278
|
-
12. Mandrake Linux 9.0
|
279
|
-
|
280
|
-
GCC 3.2 and GNU Make. ‘i686-pc-linux-gnu’.
|
281
|
-
|
282
|
-
13. IRIX 6.5
|
283
|
-
|
284
|
-
MIPS C compiler, IRIX Make. ‘mips-sgi-irix6.5’.
|
285
|
-
|
286
|
-
14. AIX 4.3.2
|
287
|
-
|
288
|
-
IBM C for AIX compiler, AIX Make. ‘rs6000-ibm-aix4.3.2.0’.
|
289
|
-
|
290
|
-
15. Microsoft Windows 2000 (Cygwin)
|
291
|
-
|
292
|
-
GCC 3.2, GNU make. ‘i686-pc-cygwin’.
|
293
|
-
|
294
|
-
16. HP-UX 11
|
295
|
-
|
296
|
-
HP-UX C compiler and HP Make. ‘ia64-hp-hpux11.22’,
|
297
|
-
‘hppa2.0w-hp-hpux11.11’.
|
298
|
-
|
299
|
-
17. SUN Solaris 2.7
|
300
|
-
|
301
|
-
GCC 3.0.4 and GNU Make. ‘sparc-sun-solaris2.7’.
|
302
|
-
|
303
|
-
18. SUN Solaris 2.8
|
304
|
-
|
305
|
-
Sun WorkShop Compiler C 6.0 and SUN Make. ‘sparc-sun-solaris2.8’.
|
306
|
-
|
307
|
-
19. SUN Solaris 2.9
|
308
|
-
|
309
|
-
Sun Forte Developer 7 C compiler and GNU Make.
|
310
|
-
‘sparc-sun-solaris2.9’.
|
311
|
-
|
312
|
-
20. NetBSD 1.6
|
313
|
-
|
314
|
-
GCC 2.95.3 and GNU Make. ‘alpha-unknown-netbsd1.6’,
|
315
|
-
‘i386-unknown-netbsdelf1.6’.
|
316
|
-
|
317
|
-
21. OpenBSD 3.1 and 3.2
|
318
|
-
|
319
|
-
GCC 2.95.3 and GNU Make. ‘alpha-unknown-openbsd3.1’,
|
320
|
-
‘i386-unknown-openbsd3.1’.
|
321
|
-
|
322
|
-
22. FreeBSD 4.7 and 4.8
|
323
|
-
|
324
|
-
GCC 2.95.4 and GNU Make. ‘alpha-unknown-freebsd4.7’,
|
325
|
-
‘alpha-unknown-freebsd4.8’, ‘i386-unknown-freebsd4.7’,
|
326
|
-
‘i386-unknown-freebsd4.8’.
|
327
|
-
|
328
|
-
23. MacOS X 10.2 Server Edition
|
329
|
-
|
330
|
-
GCC 3.1 and GNU Make. ‘powerpc-apple-darwin6.5’.
|
331
|
-
|
332
|
-
24. MacOS X 10.4 “Tiger” with Xcode 2.0
|
333
|
-
|
334
|
-
GCC 4.0 and GNU Make. ‘powerpc-apple-darwin8.0’.
|
335
|
-
|
336
|
-
25. Cross compiled to uClinux/uClibc on Motorola Coldfire
|
337
|
-
|
338
|
-
GCC 3.4 and GNU Make ‘m68k-uclinux-elf’.
|
339
|
-
|
340
|
-
26. Cross compiled to ARM using Glibc
|
341
|
-
|
342
|
-
GCC 2.95 and GNU Make ‘arm-linux’.
|
343
|
-
|
344
|
-
27. Cross compiled to Mingw32.
|
345
|
-
|
346
|
-
GCC 3.4.4 and GNU Make ‘i586-mingw32msvc’.
|
347
|
-
|
348
|
-
28. OS/2
|
349
|
-
|
350
|
-
GCC.
|
351
|
-
|
352
|
-
If you use Libidn on, or port Libidn to, a new platform please report
|
353
|
-
it to the author.
|
354
|
-
|
355
|
-
|
356
|
-
File: libidn.info, Node: Getting help, Next: Commercial Support, Prev: Supported Platforms, Up: Introduction
|
357
|
-
|
358
|
-
1.5 Getting help
|
359
|
-
================
|
360
|
-
|
361
|
-
A mailing list where users of Libidn may help each other exists, and you
|
362
|
-
can reach it by sending e-mail to <help-libidn@gnu.org>. Archives of
|
363
|
-
the mailing list discussions, and an interface to manage subscriptions,
|
364
|
-
is available through the World Wide Web at
|
365
|
-
<http://lists.gnu.org/mailman/listinfo/help-libidn>.
|
366
|
-
|
367
|
-
|
368
|
-
File: libidn.info, Node: Commercial Support, Next: Downloading and Installing, Prev: Getting help, Up: Introduction
|
369
|
-
|
370
|
-
1.6 Commercial Support
|
371
|
-
======================
|
372
|
-
|
373
|
-
Commercial support is available for users of GNU Libidn. The kind of
|
374
|
-
support that can be purchased may include:
|
375
|
-
|
376
|
-
• Implement new features. Such as country code specific profiling to
|
377
|
-
support a restricted subset of Unicode.
|
378
|
-
|
379
|
-
• Port Libidn to new platforms. This could include porting Libidn to
|
380
|
-
an embedded platforms that may need memory or size optimization.
|
381
|
-
|
382
|
-
• Integrating IDN support in your existing project.
|
383
|
-
|
384
|
-
• System design of components related to IDN.
|
385
|
-
|
386
|
-
If you are interested, please write to:
|
387
|
-
|
388
|
-
Simon Josefsson Datakonsult AB
|
389
|
-
Hagagatan 24
|
390
|
-
113 47 Stockholm
|
391
|
-
Sweden
|
392
|
-
|
393
|
-
E-mail: simon@josefsson.org
|
394
|
-
|
395
|
-
If your company provides support related to GNU Libidn and would like
|
396
|
-
to be mentioned here, contact the author (*note Bug Reports::).
|
397
|
-
|
398
|
-
|
399
|
-
File: libidn.info, Node: Downloading and Installing, Next: Bug Reports, Prev: Commercial Support, Up: Introduction
|
400
|
-
|
401
|
-
1.7 Downloading and Installing
|
402
|
-
==============================
|
403
|
-
|
404
|
-
The package can be downloaded from several places, including:
|
405
|
-
|
406
|
-
<ftp://alpha.gnu.org/pub/gnu/libidn/>
|
407
|
-
|
408
|
-
The latest version is stored in a file, e.g., ‘libidn-1.33.tar.gz’
|
409
|
-
where the ‘1.33’ value is the highest version number in the directory.
|
410
|
-
|
411
|
-
The package is then extracted, configured and built like many other
|
412
|
-
packages that use Autoconf. For detailed information on configuring and
|
413
|
-
building it, refer to the ‘INSTALL’ file that is part of the
|
414
|
-
distribution archive.
|
415
|
-
|
416
|
-
Here is an example terminal session that download, configure, build
|
417
|
-
and install the package. You will need a few basic tools, such as ‘sh’,
|
418
|
-
‘make’ and ‘cc’.
|
419
|
-
|
420
|
-
$ wget -q ftp://alpha.gnu.org/pub/gnu/libidn/libidn-1.33.tar.gz
|
421
|
-
$ tar xfz libidn-1.33.tar.gz
|
422
|
-
$ cd libidn-1.33/
|
423
|
-
$ ./configure
|
424
|
-
...
|
425
|
-
$ make
|
426
|
-
...
|
427
|
-
$ make install
|
428
|
-
...
|
429
|
-
|
430
|
-
After that Libidn should be properly installed and ready for use.
|
431
|
-
|
432
|
-
A few ‘configure’ options may be relevant, summarized in the table.
|
433
|
-
|
434
|
-
‘--enable-java’
|
435
|
-
Build the Java port into a *.JAR file. *Note Java API::, for more
|
436
|
-
information.
|
437
|
-
|
438
|
-
‘--disable-tld’
|
439
|
-
Disable the TLD module. This would typically only be useful if you
|
440
|
-
are building on a memory restricted platforms. *Note TLD
|
441
|
-
Functions::, for more information.
|
442
|
-
|
443
|
-
‘--enable-csharp[=IMPL]’
|
444
|
-
Build the ‘C#’ port into a ‘*.DLL’ file. *Note C# API::, for more
|
445
|
-
information. Here, ‘IMPL’ is ‘pnet’ or ‘mono’, indicating whether
|
446
|
-
the PNET ‘cscc’ compiler or the Mono ‘mcs’ compiler should be used,
|
447
|
-
respectively.
|
448
|
-
|
449
|
-
‘--disable-valgrind-tests’
|
450
|
-
Disable running the self-checks under Valgrind
|
451
|
-
(<http://valgrind.org/>). Normally Valgrind does not cause
|
452
|
-
problems and can detect some severe memory errors. If you are
|
453
|
-
getting errors from Valgrind that are caused by the compiler or
|
454
|
-
libc (possibly as a result of special optimization flags), you may
|
455
|
-
use this option to disable the use of Valgrind.
|
456
|
-
|
457
|
-
For the complete list, refer to the output from ‘configure --help’.
|
458
|
-
|
459
|
-
* Menu:
|
460
|
-
|
461
|
-
* Installing under Windows:: Windows specific build instructions.
|
462
|
-
|
463
|
-
|
464
|
-
File: libidn.info, Node: Installing under Windows, Up: Downloading and Installing
|
465
|
-
|
466
|
-
1.7.1 Installing under Windows
|
467
|
-
------------------------------
|
468
|
-
|
469
|
-
There are two ways to build Libidn on Windows: via MinGW or via Visual
|
470
|
-
Studio.
|
471
|
-
|
472
|
-
With MinGW, you can build a Libidn DLL and use it from other
|
473
|
-
applications. After installing MinGW (<http://mingw.org/>) follow the
|
474
|
-
generic installation instructions (*note Downloading and Installing::).
|
475
|
-
The DLL is installed by default.
|
476
|
-
|
477
|
-
For information on how to use the DLL in other applications, see:
|
478
|
-
<http://www.mingw.org/mingwfaq.shtml#faq-msvcdll>.
|
479
|
-
|
480
|
-
You can build Libidn as a native Visual Studio C++ project. This
|
481
|
-
allows you to build the code for other platforms that VS supports, such
|
482
|
-
as Windows Mobile. You need Visual Studio 2005 or later.
|
483
|
-
|
484
|
-
First download and unpack the archive as described in the generic
|
485
|
-
installation instructions (*note Downloading and Installing::). Don’t
|
486
|
-
run ‘./configure’. Instead, start Visual Studio and open the project
|
487
|
-
file ‘windows/libidn.sln’ inside the Libidn directory. You should be
|
488
|
-
able to build the project using Build Project.
|
489
|
-
|
490
|
-
Output libraries will be written into the ‘windows/lib’ (or
|
491
|
-
‘windows/lib/debug’ for Debug versions) folder.
|
492
|
-
|
493
|
-
When working with Windows you may want to look into the special
|
494
|
-
memory handling functions that may be needed (*note Memory handling
|
495
|
-
under Windows::).
|
496
|
-
|
497
|
-
|
498
|
-
File: libidn.info, Node: Bug Reports, Next: Contributing, Prev: Downloading and Installing, Up: Introduction
|
499
|
-
|
500
|
-
1.8 Bug Reports
|
501
|
-
===============
|
502
|
-
|
503
|
-
If you think you have found a bug in Libidn, please investigate it and
|
504
|
-
report it.
|
505
|
-
|
506
|
-
• Please make sure that the bug is really in Libidn, and preferably
|
507
|
-
also check that it hasn’t already been fixed in the latest version.
|
508
|
-
|
509
|
-
• You have to send us a test case that makes it possible for us to
|
510
|
-
reproduce the bug.
|
511
|
-
|
512
|
-
• You also have to explain what is wrong; if you get a crash, or if
|
513
|
-
the results printed are not good and in that case, in what way.
|
514
|
-
Make sure that the bug report includes all information you would
|
515
|
-
need to fix this kind of bug for someone else.
|
516
|
-
|
517
|
-
Please make an effort to produce a self-contained report, with
|
518
|
-
something definite that can be tested or debugged. Vague queries or
|
519
|
-
piecemeal messages are difficult to act on and don’t help the
|
520
|
-
development effort.
|
521
|
-
|
522
|
-
If your bug report is good, we will do our best to help you to get a
|
523
|
-
corrected version of the software; if the bug report is poor, we won’t
|
524
|
-
do anything about it (apart from asking you to send better bug reports).
|
525
|
-
|
526
|
-
If you think something in this manual is unclear, or downright
|
527
|
-
incorrect, or if the language needs to be improved, please also send a
|
528
|
-
note.
|
529
|
-
|
530
|
-
Send your bug report to:
|
531
|
-
|
532
|
-
‘bug-libidn@gnu.org’
|
533
|
-
|
534
|
-
|
535
|
-
File: libidn.info, Node: Contributing, Prev: Bug Reports, Up: Introduction
|
536
|
-
|
537
|
-
1.9 Contributing
|
538
|
-
================
|
539
|
-
|
540
|
-
If you want to submit a patch for inclusion – from solve a typo you
|
541
|
-
discovered, up to adding support for a new feature – you should submit
|
542
|
-
it as a bug report (*note Bug Reports::). There are some things that
|
543
|
-
you can do to increase the chances for it to be included in the official
|
544
|
-
package.
|
545
|
-
|
546
|
-
Unless your patch is very small (say, under 10 lines) we require that
|
547
|
-
you assign the copyright of your work to the Free Software Foundation.
|
548
|
-
This is to protect the freedom of the project. If you have not already
|
549
|
-
signed papers, we will send you the necessary information when you
|
550
|
-
submit your contribution.
|
551
|
-
|
552
|
-
For contributions that doesn’t consist of actual programming code,
|
553
|
-
the only guidelines are common sense. Use it.
|
554
|
-
|
555
|
-
For code contributions, a number of style guides will help you:
|
556
|
-
|
557
|
-
• Coding Style. Follow the GNU Standards document (*note GNU Coding
|
558
|
-
Standards: (standards)top.).
|
559
|
-
|
560
|
-
If you normally code using another coding standard, there is no
|
561
|
-
problem, but you should use ‘indent’ to reformat the code (*note
|
562
|
-
GNU Indent: (indent)top.) before submitting your work.
|
563
|
-
|
564
|
-
• Use the unified diff format ‘diff -u’.
|
565
|
-
|
566
|
-
• Return errors. No reason whatsoever should abort the execution of
|
567
|
-
the library. Even memory allocation errors, e.g. when malloc
|
568
|
-
return NULL, should work although result in an error code.
|
569
|
-
|
570
|
-
• Design with thread safety in mind. Don’t use global variables and
|
571
|
-
the like.
|
572
|
-
|
573
|
-
• Avoid using the C math library. It causes problems for embedded
|
574
|
-
implementations, and in most situations it is very easy to avoid
|
575
|
-
using it.
|
576
|
-
|
577
|
-
• Document your functions. Use comments before each function
|
578
|
-
headers, that, if properly formatted, are extracted into GTK-DOC
|
579
|
-
web pages. Don’t forget to update the Texinfo manual as well.
|
580
|
-
|
581
|
-
• Supply a ChangeLog and NEWS entries, where appropriate.
|
582
|
-
|
583
|
-
|
584
|
-
File: libidn.info, Node: Preparation, Next: Utility Functions, Prev: Introduction, Up: Top
|
585
|
-
|
586
|
-
2 Preparation
|
587
|
-
*************
|
588
|
-
|
589
|
-
To use ‘Libidn’, you have to perform some changes to your sources and
|
590
|
-
the build system. The necessary changes are small and explained in the
|
591
|
-
following sections. At the end of this chapter, it is described how the
|
592
|
-
library is initialized, and how the requirements of the library are
|
593
|
-
verified.
|
594
|
-
|
595
|
-
A faster way to find out how to adapt your application for use with
|
596
|
-
‘Libidn’ may be to look at the examples at the end of this manual (*note
|
597
|
-
Examples::).
|
598
|
-
|
599
|
-
* Menu:
|
600
|
-
|
601
|
-
* Header::
|
602
|
-
* Initialization::
|
603
|
-
* Version Check::
|
604
|
-
* Building the source::
|
605
|
-
* Autoconf tests::
|
606
|
-
* Memory handling under Windows::
|
607
|
-
|
608
|
-
|
609
|
-
File: libidn.info, Node: Header, Next: Initialization, Up: Preparation
|
610
|
-
|
611
|
-
2.1 Header
|
612
|
-
==========
|
613
|
-
|
614
|
-
The library contains a few independent parts, and each part export the
|
615
|
-
interfaces (data types and functions) in a header file. You must
|
616
|
-
include the appropriate header files in all programs using the library,
|
617
|
-
either directly or through some other header file, like this:
|
618
|
-
|
619
|
-
#include <stringprep.h>
|
620
|
-
|
621
|
-
The header files and the functions they define are categorized as
|
622
|
-
follows:
|
623
|
-
|
624
|
-
stringprep.h
|
625
|
-
|
626
|
-
The low-level stringprep API entry point. For IDN applications,
|
627
|
-
this is usually invoked via IDNA. Some applications, specifically
|
628
|
-
non-IDN ones, may want to prepare strings directly though, and
|
629
|
-
should include this header file.
|
630
|
-
|
631
|
-
The name space of the stringprep part of Libidn is ‘stringprep*’
|
632
|
-
for function names, ‘Stringprep*’ for data types and ‘STRINGPREP_*’
|
633
|
-
for other symbols. In addition, ‘_stringprep*’ is reserved for
|
634
|
-
internal use and should never be used by applications.
|
635
|
-
|
636
|
-
punycode.h
|
637
|
-
|
638
|
-
The entry point to Punycode encoding and decoding functions.
|
639
|
-
Normally punycode is used via the idna.h interface, but some
|
640
|
-
application may want to perform raw punycode operations.
|
641
|
-
|
642
|
-
The name space of the punycode part of Libidn is ‘punycode_*’ for
|
643
|
-
function names, ‘Punycode*’ for data types and ‘PUNYCODE_*’ for
|
644
|
-
other symbols. In addition, ‘_punycode*’ is reserved for internal
|
645
|
-
use and should never be used by applications.
|
646
|
-
idna.h
|
647
|
-
|
648
|
-
The entry point to the IDNA functions. This is the normal entry
|
649
|
-
point for applications that need IDN functionality.
|
650
|
-
|
651
|
-
The name space of the IDNA part of Libidn is ‘idna_*’ for function
|
652
|
-
names, ‘Idna*’ for data types and ‘IDNA_*’ for other symbols. In
|
653
|
-
addition, ‘_idna*’ is reserved for internal use and should never be
|
654
|
-
used by applications.
|
655
|
-
|
656
|
-
tld.h
|
657
|
-
|
658
|
-
The entry point to the TLD functions. Normal applications are not
|
659
|
-
expected to need this functionality, but it is present for
|
660
|
-
applications that are used by TLDs to validate customer input.
|
661
|
-
|
662
|
-
The name space of the TLD part of Libidn is ‘tld_*’ for function
|
663
|
-
names, ‘Tld_*’ for data types and ‘TLD_*’ for other symbols. In
|
664
|
-
addition, ‘_tld*’ is reserved for internal use and should never be
|
665
|
-
used by applications.
|
666
|
-
|
667
|
-
pr29.h
|
668
|
-
|
669
|
-
The entry point to the PR29 functions. These functions are used to
|
670
|
-
detect “problem sequences” (*note PR29 Functions::), mostly for use
|
671
|
-
in security critical applications.
|
672
|
-
|
673
|
-
The name space of the PR29 part of Libidn is ‘pr29_*’ for function
|
674
|
-
names, ‘Pr29_*’ for data types and ‘PR29_*’ for other symbols. In
|
675
|
-
addition, ‘_pr29*’ is reserved for internal use and should never be
|
676
|
-
used by applications.
|
677
|
-
|
678
|
-
idn-free.h
|
679
|
-
|
680
|
-
The entry point to the Windows memory de-allocation function (*note
|
681
|
-
Memory handling under Windows::). It contains only one function
|
682
|
-
‘idn_free’.
|
683
|
-
|
684
|
-
All header files defined and use the symbol ‘IDNAPI’ to decorate the
|
685
|
-
API functions.
|
686
|
-
|
687
|
-
|
688
|
-
File: libidn.info, Node: Initialization, Next: Version Check, Prev: Header, Up: Preparation
|
689
|
-
|
690
|
-
2.2 Initialization
|
691
|
-
==================
|
692
|
-
|
693
|
-
Libidn is stateless and does not need any initialization.
|
694
|
-
|
695
|
-
|
696
|
-
File: libidn.info, Node: Version Check, Next: Building the source, Prev: Initialization, Up: Preparation
|
697
|
-
|
698
|
-
2.3 Version Check
|
699
|
-
=================
|
700
|
-
|
701
|
-
It is often desirable to check that the version of ‘Libidn’ used is
|
702
|
-
indeed one which fits all requirements. Even with binary compatibility
|
703
|
-
new features may have been introduced but due to problem with the
|
704
|
-
dynamic linker an old version is actually used. So you may want to
|
705
|
-
check that the version is okay right after program startup.
|
706
|
-
|
707
|
-
stringprep_check_version
|
708
|
-
------------------------
|
709
|
-
|
710
|
-
-- Function: const char * stringprep_check_version (const char *
|
711
|
-
REQ_VERSION)
|
712
|
-
REQ_VERSION: Required version number, or NULL.
|
713
|
-
|
714
|
-
Check that the version of the library is at minimum the requested
|
715
|
-
one and return the version string; return NULL if the condition is
|
716
|
-
not satisfied. If a NULL is passed to this function, no check is
|
717
|
-
done, but the version string is simply returned.
|
718
|
-
|
719
|
-
See ‘STRINGPREP_VERSION’ for a suitable ‘req_version’ string.
|
720
|
-
|
721
|
-
Return value: Version string of run-time library, or NULL if the
|
722
|
-
run-time library does not meet the required version number.
|
723
|
-
|
724
|
-
The normal way to use the function is to put something similar to the
|
725
|
-
following first in your ‘main’:
|
726
|
-
|
727
|
-
if (!stringprep_check_version (STRINGPREP_VERSION))
|
728
|
-
{
|
729
|
-
printf ("stringprep_check_version() failed:\n"
|
730
|
-
"Header file incompatible with shared library.\n");
|
731
|
-
exit(EXIT_FAILURE);
|
732
|
-
}
|
733
|
-
|
734
|
-
|
735
|
-
File: libidn.info, Node: Building the source, Next: Autoconf tests, Prev: Version Check, Up: Preparation
|
736
|
-
|
737
|
-
2.4 Building the source
|
738
|
-
=======================
|
739
|
-
|
740
|
-
If you want to compile a source file including e.g. the ‘idna.h’ header
|
741
|
-
file, you must make sure that the compiler can find it in the directory
|
742
|
-
hierarchy. This is accomplished by adding the path to the directory in
|
743
|
-
which the header file is located to the compilers include file search
|
744
|
-
path (via the ‘-I’ option).
|
745
|
-
|
746
|
-
However, the path to the include file is determined at the time the
|
747
|
-
source is configured. To solve this problem, ‘Libidn’ uses the external
|
748
|
-
package ‘pkg-config’ that knows the path to the include file and other
|
749
|
-
configuration options. The options that need to be added to the
|
750
|
-
compiler invocation at compile time are output by the ‘--cflags’ option
|
751
|
-
to ‘pkg-config libidn’. The following example shows how it can be used
|
752
|
-
at the command line:
|
753
|
-
|
754
|
-
gcc -c foo.c `pkg-config libidn --cflags`
|
755
|
-
|
756
|
-
Adding the output of ‘pkg-config libidn --cflags’ to the compilers
|
757
|
-
command line will ensure that the compiler can find e.g. the idna.h
|
758
|
-
header file.
|
759
|
-
|
760
|
-
A similar problem occurs when linking the program with the library.
|
761
|
-
Again, the compiler has to find the library files. For this to work,
|
762
|
-
the path to the library files has to be added to the library search path
|
763
|
-
(via the ‘-L’ option). For this, the option ‘--libs’ to ‘pkg-config
|
764
|
-
libidn’ can be used. For convenience, this option also outputs all
|
765
|
-
other options that are required to link the program with the ‘libidn’
|
766
|
-
library. The example shows how to link ‘foo.o’ with the ‘libidn’
|
767
|
-
library to a program ‘foo’.
|
768
|
-
|
769
|
-
gcc -o foo foo.o `pkg-config libidn --libs`
|
770
|
-
|
771
|
-
Of course you can also combine both examples to a single command by
|
772
|
-
specifying both options to ‘pkg-config’:
|
773
|
-
|
774
|
-
gcc -o foo foo.c `pkg-config libidn --cflags --libs`
|
775
|
-
|
776
|
-
|
777
|
-
File: libidn.info, Node: Autoconf tests, Next: Memory handling under Windows, Prev: Building the source, Up: Preparation
|
778
|
-
|
779
|
-
2.5 Autoconf tests
|
780
|
-
==================
|
781
|
-
|
782
|
-
If your project uses Autoconf (*note GNU Autoconf: (autoconf)top.) to
|
783
|
-
check for installed libraries, you might find the following snippet
|
784
|
-
illustrative. It add a new ‘configure’ parameter ‘--with-libidn’, and
|
785
|
-
check for ‘idna.h’ and ‘-lidn’ (possibly below the directory specified
|
786
|
-
as the optional argument to ‘--with-libidn’), and define the CPP symbol
|
787
|
-
‘LIBIDN’ if the library is found. The default behaviour is to search
|
788
|
-
for the library and enable the functionality (that is, define the
|
789
|
-
symbol) when the library is found, but if you wish to make the default
|
790
|
-
behaviour of your package be that Libidn is not used (even if it is
|
791
|
-
installed on the system), change ‘libidn=yes’ to ‘libidn=no’ on the
|
792
|
-
third line.
|
793
|
-
|
794
|
-
AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
|
795
|
-
[Support IDN (needs GNU Libidn)]),
|
796
|
-
libidn=$withval, libidn=yes)
|
797
|
-
if test "$libidn" != "no"; then
|
798
|
-
if test "$libidn" != "yes"; then
|
799
|
-
LDFLAGS="${LDFLAGS} -L$libidn/lib"
|
800
|
-
CPPFLAGS="${CPPFLAGS} -I$libidn/include"
|
801
|
-
fi
|
802
|
-
AC_CHECK_HEADER(idna.h,
|
803
|
-
AC_CHECK_LIB(idn, stringprep_check_version,
|
804
|
-
[libidn=yes LIBS="${LIBS} -lidn"], libidn=no),
|
805
|
-
libidn=no)
|
806
|
-
fi
|
807
|
-
if test "$libidn" != "no" ; then
|
808
|
-
AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
|
809
|
-
else
|
810
|
-
AC_MSG_WARN([Libidn not found])
|
811
|
-
fi
|
812
|
-
AC_MSG_CHECKING([if Libidn should be used])
|
813
|
-
AC_MSG_RESULT($libidn)
|
814
|
-
|
815
|
-
If you require that your users have installed ‘pkg-config’ (which I
|
816
|
-
cannot recommend generally), the above can be done more easily as
|
817
|
-
follows.
|
818
|
-
|
819
|
-
AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
|
820
|
-
[Support IDN (needs GNU Libidn)]),
|
821
|
-
libidn=$withval, libidn=yes)
|
822
|
-
if test "$libidn" != "no" ; then
|
823
|
-
PKG_CHECK_MODULES(LIBIDN, libidn >= 0.0.0, [libidn=yes], [libidn=no])
|
824
|
-
if test "$libidn" != "yes" ; then
|
825
|
-
libidn=no
|
826
|
-
AC_MSG_WARN([Libidn not found])
|
827
|
-
else
|
828
|
-
libidn=yes
|
829
|
-
AC_DEFINE(LIBIDN, 1, [Define to 1 if you want Libidn.])
|
830
|
-
fi
|
831
|
-
fi
|
832
|
-
AC_MSG_CHECKING([if Libidn should be used])
|
833
|
-
AC_MSG_RESULT($libidn)
|
834
|
-
|
835
|
-
|
836
|
-
File: libidn.info, Node: Memory handling under Windows, Prev: Autoconf tests, Up: Preparation
|
837
|
-
|
838
|
-
2.6 Memory handling under Windows
|
839
|
-
=================================
|
840
|
-
|
841
|
-
Several functions in the library allocates memory. The memory is
|
842
|
-
expected to be de-allocated using the ‘free’ function. Under Windows,
|
843
|
-
it is sometimes necessary to de-allocate memory in the same module that
|
844
|
-
allocated a memory region. The reason is that different modules use
|
845
|
-
separate heap memory regions. To solve this problem we provide a
|
846
|
-
function to de-allocate memory inside the library.
|
847
|
-
|
848
|
-
Note that we do not recommend using this interface generally if you
|
849
|
-
do not care about Windows portability.
|
850
|
-
|
851
|
-
2.7 Header file ‘idn-free.h’
|
852
|
-
============================
|
853
|
-
|
854
|
-
To use the function explained in this chapter, you need to include the
|
855
|
-
file ‘idn-free.h’ using:
|
856
|
-
|
857
|
-
#include <idn-free.h>
|
858
|
-
|
859
|
-
2.8 Memory de-allocation function
|
860
|
-
=================================
|
861
|
-
|
862
|
-
idn_free
|
863
|
-
--------
|
864
|
-
|
865
|
-
-- Function: void idn_free (void * PTR)
|
866
|
-
PTR: memory region to deallocate, or ‘NULL’ .
|
867
|
-
|
868
|
-
Deallocates memory region by calling ‘free()’ . If ‘ptr’ is ‘NULL’
|
869
|
-
no operation is performed.
|
870
|
-
|
871
|
-
Normally applications de-allocate strings allocated by libidn by
|
872
|
-
calling ‘free()’ directly. Under Windows, different parts of the
|
873
|
-
same application may use different heap memory, and then it is
|
874
|
-
important to deallocate memory allocated within the same module
|
875
|
-
that allocated it. This function makes that possible.
|
876
|
-
|
877
|
-
|
878
|
-
File: libidn.info, Node: Utility Functions, Next: Stringprep Functions, Prev: Preparation, Up: Top
|
879
|
-
|
880
|
-
3 Utility Functions
|
881
|
-
*******************
|
882
|
-
|
883
|
-
The rest of this library makes extensive use of Unicode characters. In
|
884
|
-
order to interface this library with the outside world, your application
|
885
|
-
may need to make various Unicode transformations.
|
886
|
-
|
887
|
-
3.1 Header file ‘stringprep.h’
|
888
|
-
==============================
|
889
|
-
|
890
|
-
To use the functions explained in this chapter, you need to include the
|
891
|
-
file ‘stringprep.h’ using:
|
892
|
-
|
893
|
-
#include <stringprep.h>
|
894
|
-
|
895
|
-
3.2 Unicode Encoding Transformation
|
896
|
-
===================================
|
897
|
-
|
898
|
-
stringprep_unichar_to_utf8
|
899
|
-
--------------------------
|
900
|
-
|
901
|
-
-- Function: int stringprep_unichar_to_utf8 (uint32_t C, char * OUTBUF)
|
902
|
-
C: a ISO10646 character code
|
903
|
-
|
904
|
-
OUTBUF: output buffer, must have at least 6 bytes of space. If
|
905
|
-
‘NULL’ , the length will be computed and returned and nothing will
|
906
|
-
be written to ‘outbuf’ .
|
907
|
-
|
908
|
-
Converts a single character to UTF-8.
|
909
|
-
|
910
|
-
Return value: number of bytes written.
|
911
|
-
|
912
|
-
stringprep_utf8_to_unichar
|
913
|
-
--------------------------
|
914
|
-
|
915
|
-
-- Function: uint32_t stringprep_utf8_to_unichar (const char * P)
|
916
|
-
P: a pointer to Unicode character encoded as UTF-8
|
917
|
-
|
918
|
-
Converts a sequence of bytes encoded as UTF-8 to a Unicode
|
919
|
-
character. If ‘p’ does not point to a valid UTF-8 encoded
|
920
|
-
character, results are undefined.
|
921
|
-
|
922
|
-
Return value: the resulting character.
|
923
|
-
|
924
|
-
stringprep_ucs4_to_utf8
|
925
|
-
-----------------------
|
926
|
-
|
927
|
-
-- Function: char * stringprep_ucs4_to_utf8 (const uint32_t * STR,
|
928
|
-
ssize_t LEN, size_t * ITEMS_READ, size_t * ITEMS_WRITTEN)
|
929
|
-
STR: a UCS-4 encoded string
|
930
|
-
|
931
|
-
LEN: the maximum length of ‘str’ to use. If ‘len’ < 0, then the
|
932
|
-
string is terminated with a 0 character.
|
933
|
-
|
934
|
-
ITEMS_READ: location to store number of characters read read, or
|
935
|
-
‘NULL’ .
|
936
|
-
|
937
|
-
ITEMS_WRITTEN: location to store number of bytes written or ‘NULL’
|
938
|
-
. The value here stored does not include the trailing 0 byte.
|
939
|
-
|
940
|
-
Convert a string from a 32-bit fixed width representation as UCS-4.
|
941
|
-
to UTF-8. The result will be terminated with a 0 byte.
|
942
|
-
|
943
|
-
Return value: a pointer to a newly allocated UTF-8 string. This
|
944
|
-
value must be deallocated by the caller. If an error occurs,
|
945
|
-
‘NULL’ will be returned.
|
946
|
-
|
947
|
-
stringprep_utf8_to_ucs4
|
948
|
-
-----------------------
|
949
|
-
|
950
|
-
-- Function: uint32_t * stringprep_utf8_to_ucs4 (const char * STR,
|
951
|
-
ssize_t LEN, size_t * ITEMS_WRITTEN)
|
952
|
-
STR: a UTF-8 encoded string
|
953
|
-
|
954
|
-
LEN: the maximum length of ‘str’ to use. If ‘len’ < 0, then the
|
955
|
-
string is nul-terminated.
|
956
|
-
|
957
|
-
ITEMS_WRITTEN: location to store the number of characters in the
|
958
|
-
result, or ‘NULL’ .
|
959
|
-
|
960
|
-
Convert a string from UTF-8 to a 32-bit fixed width representation
|
961
|
-
as UCS-4. The function now performs error checking to verify that
|
962
|
-
the input is valid UTF-8 (before it was documented to not do error
|
963
|
-
checking).
|
964
|
-
|
965
|
-
Return value: a pointer to a newly allocated UCS-4 string. This
|
966
|
-
value must be deallocated by the caller.
|
967
|
-
|
968
|
-
3.3 Unicode Normalization
|
969
|
-
=========================
|
970
|
-
|
971
|
-
stringprep_ucs4_nfkc_normalize
|
972
|
-
------------------------------
|
973
|
-
|
974
|
-
-- Function: uint32_t * stringprep_ucs4_nfkc_normalize (const uint32_t
|
975
|
-
* STR, ssize_t LEN)
|
976
|
-
STR: a Unicode string.
|
977
|
-
|
978
|
-
LEN: length of ‘str’ array, or -1 if ‘str’ is nul-terminated.
|
979
|
-
|
980
|
-
Converts a UCS4 string into canonical form, see
|
981
|
-
‘stringprep_utf8_nfkc_normalize()’ for more information.
|
982
|
-
|
983
|
-
Return value: a newly allocated Unicode string, that is the NFKC
|
984
|
-
normalized form of ‘str’ .
|
985
|
-
|
986
|
-
stringprep_utf8_nfkc_normalize
|
987
|
-
------------------------------
|
988
|
-
|
989
|
-
-- Function: char * stringprep_utf8_nfkc_normalize (const char * STR,
|
990
|
-
ssize_t LEN)
|
991
|
-
STR: a UTF-8 encoded string.
|
992
|
-
|
993
|
-
LEN: length of ‘str’ , in bytes, or -1 if ‘str’ is nul-terminated.
|
994
|
-
|
995
|
-
Converts a string into canonical form, standardizing such issues as
|
996
|
-
whether a character with an accent is represented as a base
|
997
|
-
character and combining accent or as a single precomposed
|
998
|
-
character.
|
999
|
-
|
1000
|
-
The normalization mode is NFKC (ALL COMPOSE). It standardizes
|
1001
|
-
differences that do not affect the text content, such as the
|
1002
|
-
above-mentioned accent representation. It standardizes the
|
1003
|
-
"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
|
1004
|
-
the standard forms (in this case DIGIT THREE). Formatting
|
1005
|
-
information may be lost but for most text operations such
|
1006
|
-
characters should be considered the same. It returns a result with
|
1007
|
-
composed forms rather than a maximally decomposed form.
|
1008
|
-
|
1009
|
-
Return value: a newly allocated string, that is the NFKC normalized
|
1010
|
-
form of ‘str’ .
|
1011
|
-
|
1012
|
-
3.4 Character Set Conversion
|
1013
|
-
============================
|
1014
|
-
|
1015
|
-
stringprep_locale_charset
|
1016
|
-
-------------------------
|
1017
|
-
|
1018
|
-
-- Function: const char * stringprep_locale_charset ( VOID)
|
1019
|
-
|
1020
|
-
Find out current locale charset. The function respect the CHARSET
|
1021
|
-
environment variable, but typically uses nl_langinfo(CODESET) when
|
1022
|
-
it is supported. It fall back on "ASCII" if CHARSET isn’t set and
|
1023
|
-
nl_langinfo isn’t supported or return anything.
|
1024
|
-
|
1025
|
-
Note that this function return the application’s locale’s preferred
|
1026
|
-
charset (or thread’s locale’s preffered charset, if your system
|
1027
|
-
support thread-specific locales). It does not return what the
|
1028
|
-
system may be using. Thus, if you receive data from external
|
1029
|
-
sources you cannot in general use this function to guess what
|
1030
|
-
charset it is encoded in. Use stringprep_convert from the external
|
1031
|
-
representation into the charset returned by this function, to have
|
1032
|
-
data in the locale encoding.
|
1033
|
-
|
1034
|
-
Return value: Return the character set used by the current locale.
|
1035
|
-
It will never return NULL, but use "ASCII" as a fallback.
|
1036
|
-
|
1037
|
-
stringprep_convert
|
1038
|
-
------------------
|
1039
|
-
|
1040
|
-
-- Function: char * stringprep_convert (const char * STR, const char *
|
1041
|
-
TO_CODESET, const char * FROM_CODESET)
|
1042
|
-
STR: input zero-terminated string.
|
1043
|
-
|
1044
|
-
TO_CODESET: name of destination character set.
|
1045
|
-
|
1046
|
-
FROM_CODESET: name of origin character set, as used by ‘str’ .
|
1047
|
-
|
1048
|
-
Convert the string from one character set to another using the
|
1049
|
-
system’s ‘iconv()’ function.
|
1050
|
-
|
1051
|
-
Return value: Returns newly allocated zero-terminated string which
|
1052
|
-
is ‘str’ transcoded into to_codeset.
|
1053
|
-
|
1054
|
-
stringprep_locale_to_utf8
|
1055
|
-
-------------------------
|
1056
|
-
|
1057
|
-
-- Function: char * stringprep_locale_to_utf8 (const char * STR)
|
1058
|
-
STR: input zero terminated string.
|
1059
|
-
|
1060
|
-
Convert string encoded in the locale’s character set into UTF-8 by
|
1061
|
-
using ‘stringprep_convert()’ .
|
1062
|
-
|
1063
|
-
Return value: Returns newly allocated zero-terminated string which
|
1064
|
-
is ‘str’ transcoded into UTF-8.
|
1065
|
-
|
1066
|
-
stringprep_utf8_to_locale
|
1067
|
-
-------------------------
|
1068
|
-
|
1069
|
-
-- Function: char * stringprep_utf8_to_locale (const char * STR)
|
1070
|
-
STR: input zero terminated string.
|
1071
|
-
|
1072
|
-
Convert string encoded in UTF-8 into the locale’s character set by
|
1073
|
-
using ‘stringprep_convert()’ .
|
1074
|
-
|
1075
|
-
Return value: Returns newly allocated zero-terminated string which
|
1076
|
-
is ‘str’ transcoded into the locale’s character set.
|
1077
|
-
|
1078
|
-
|
1079
|
-
File: libidn.info, Node: Stringprep Functions, Next: Punycode Functions, Prev: Utility Functions, Up: Top
|
1080
|
-
|
1081
|
-
4 Stringprep Functions
|
1082
|
-
**********************
|
1083
|
-
|
1084
|
-
Stringprep describes a framework for preparing Unicode text strings in
|
1085
|
-
order to increase the likelihood that string input and string comparison
|
1086
|
-
work in ways that make sense for typical users throughout the world.
|
1087
|
-
The stringprep protocol is useful for protocol identifier values,
|
1088
|
-
company and personal names, internationalized domain names, and other
|
1089
|
-
text strings.
|
1090
|
-
|
1091
|
-
4.1 Header file ‘stringprep.h’
|
1092
|
-
==============================
|
1093
|
-
|
1094
|
-
To use the functions explained in this chapter, you need to include the
|
1095
|
-
file ‘stringprep.h’ using:
|
1096
|
-
|
1097
|
-
#include <stringprep.h>
|
1098
|
-
|
1099
|
-
4.2 Defining A Stringprep Profile
|
1100
|
-
=================================
|
1101
|
-
|
1102
|
-
Further types and structures are defined for applications that want to
|
1103
|
-
specify their own stringprep profile. As these are fairly obscure, and
|
1104
|
-
by necessity tied to the implementation, we do not document them here.
|
1105
|
-
Look into the ‘stringprep.h’ header file, and the ‘profiles.c’ source
|
1106
|
-
code for the details.
|
1107
|
-
|
1108
|
-
4.3 Control Flags
|
1109
|
-
=================
|
1110
|
-
|
1111
|
-
-- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_NFKC
|
1112
|
-
Disable the NFKC normalization, as well as selecting the non-NFKC
|
1113
|
-
case folding tables. Usually the profile specifies BIDI and NFKC
|
1114
|
-
settings, and applications should not override it unless in special
|
1115
|
-
situations.
|
1116
|
-
|
1117
|
-
-- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_BIDI
|
1118
|
-
Disable the BIDI step. Usually the profile specifies BIDI and NFKC
|
1119
|
-
settings, and applications should not override it unless in special
|
1120
|
-
situations.
|
1121
|
-
|
1122
|
-
-- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_UNASSIGNED
|
1123
|
-
Make the library return with an error if string contains unassigned
|
1124
|
-
characters according to profile.
|
1125
|
-
|
1126
|
-
4.4 Core Functions
|
1127
|
-
==================
|
1128
|
-
|
1129
|
-
stringprep_4i
|
1130
|
-
-------------
|
1131
|
-
|
1132
|
-
-- Function: int stringprep_4i (uint32_t * UCS4, size_t * LEN, size_t
|
1133
|
-
MAXUCS4LEN, Stringprep_profile_flags FLAGS, const
|
1134
|
-
Stringprep_profile * PROFILE)
|
1135
|
-
UCS4: input/output array with string to prepare.
|
1136
|
-
|
1137
|
-
LEN: on input, length of input array with Unicode code points, on
|
1138
|
-
exit, length of output array with Unicode code points.
|
1139
|
-
|
1140
|
-
MAXUCS4LEN: maximum length of input/output array.
|
1141
|
-
|
1142
|
-
FLAGS: a ‘Stringprep_profile_flags’ value, or 0.
|
1143
|
-
|
1144
|
-
PROFILE: pointer to ‘Stringprep_profile’ to use.
|
1145
|
-
|
1146
|
-
Prepare the input UCS-4 string according to the stringprep profile,
|
1147
|
-
and write back the result to the input string.
|
1148
|
-
|
1149
|
-
The input is not required to be zero terminated ( ‘ucs4’ [ ‘len’ ]
|
1150
|
-
= 0). The output will not be zero terminated unless ‘ucs4’ [ ‘len’
|
1151
|
-
] = 0. Instead, see ‘stringprep_4zi()’ if your input is zero
|
1152
|
-
terminated or if you want the output to be.
|
1153
|
-
|
1154
|
-
Since the stringprep operation can expand the string, ‘maxucs4len’
|
1155
|
-
indicate how large the buffer holding the string is. This function
|
1156
|
-
will not read or write to code points outside that size.
|
1157
|
-
|
1158
|
-
The ‘flags’ are one of ‘Stringprep_profile_flags’ values, or 0.
|
1159
|
-
|
1160
|
-
The ‘profile’ contain the ‘Stringprep_profile’ instructions to
|
1161
|
-
perform. Your application can define new profiles, possibly
|
1162
|
-
re-using the generic stringprep tables that always will be part of
|
1163
|
-
the library, or use one of the currently supported profiles.
|
1164
|
-
|
1165
|
-
Return value: Returns ‘STRINGPREP_OK’ iff successful, or an
|
1166
|
-
‘Stringprep_rc’ error code.
|
1167
|
-
|
1168
|
-
stringprep_4zi
|
1169
|
-
--------------
|
1170
|
-
|
1171
|
-
-- Function: int stringprep_4zi (uint32_t * UCS4, size_t MAXUCS4LEN,
|
1172
|
-
Stringprep_profile_flags FLAGS, const Stringprep_profile *
|
1173
|
-
PROFILE)
|
1174
|
-
UCS4: input/output array with zero terminated string to prepare.
|
1175
|
-
|
1176
|
-
MAXUCS4LEN: maximum length of input/output array.
|
1177
|
-
|
1178
|
-
FLAGS: a ‘Stringprep_profile_flags’ value, or 0.
|
1179
|
-
|
1180
|
-
PROFILE: pointer to ‘Stringprep_profile’ to use.
|
1181
|
-
|
1182
|
-
Prepare the input zero terminated UCS-4 string according to the
|
1183
|
-
stringprep profile, and write back the result to the input string.
|
1184
|
-
|
1185
|
-
Since the stringprep operation can expand the string, ‘maxucs4len’
|
1186
|
-
indicate how large the buffer holding the string is. This function
|
1187
|
-
will not read or write to code points outside that size.
|
1188
|
-
|
1189
|
-
The ‘flags’ are one of ‘Stringprep_profile_flags’ values, or 0.
|
1190
|
-
|
1191
|
-
The ‘profile’ contain the ‘Stringprep_profile’ instructions to
|
1192
|
-
perform. Your application can define new profiles, possibly
|
1193
|
-
re-using the generic stringprep tables that always will be part of
|
1194
|
-
the library, or use one of the currently supported profiles.
|
1195
|
-
|
1196
|
-
Return value: Returns ‘STRINGPREP_OK’ iff successful, or an
|
1197
|
-
‘Stringprep_rc’ error code.
|
1198
|
-
|
1199
|
-
stringprep
|
1200
|
-
----------
|
1201
|
-
|
1202
|
-
-- Function: int stringprep (char * IN, size_t MAXLEN,
|
1203
|
-
Stringprep_profile_flags FLAGS, const Stringprep_profile *
|
1204
|
-
PROFILE)
|
1205
|
-
IN: input/ouput array with string to prepare.
|
1206
|
-
|
1207
|
-
MAXLEN: maximum length of input/output array.
|
1208
|
-
|
1209
|
-
FLAGS: a ‘Stringprep_profile_flags’ value, or 0.
|
1210
|
-
|
1211
|
-
PROFILE: pointer to ‘Stringprep_profile’ to use.
|
1212
|
-
|
1213
|
-
Prepare the input zero terminated UTF-8 string according to the
|
1214
|
-
stringprep profile, and write back the result to the input string.
|
1215
|
-
|
1216
|
-
Note that you must convert strings entered in the systems locale
|
1217
|
-
into UTF-8 before using this function, see
|
1218
|
-
‘stringprep_locale_to_utf8()’ .
|
1219
|
-
|
1220
|
-
Since the stringprep operation can expand the string, ‘maxlen’
|
1221
|
-
indicate how large the buffer holding the string is. This function
|
1222
|
-
will not read or write to characters outside that size.
|
1223
|
-
|
1224
|
-
The ‘flags’ are one of ‘Stringprep_profile_flags’ values, or 0.
|
1225
|
-
|
1226
|
-
The ‘profile’ contain the ‘Stringprep_profile’ instructions to
|
1227
|
-
perform. Your application can define new profiles, possibly
|
1228
|
-
re-using the generic stringprep tables that always will be part of
|
1229
|
-
the library, or use one of the currently supported profiles.
|
1230
|
-
|
1231
|
-
Return value: Returns ‘STRINGPREP_OK’ iff successful, or an error
|
1232
|
-
code.
|
1233
|
-
|
1234
|
-
stringprep_profile
|
1235
|
-
------------------
|
1236
|
-
|
1237
|
-
-- Function: int stringprep_profile (const char * IN, char ** OUT,
|
1238
|
-
const char * PROFILE, Stringprep_profile_flags FLAGS)
|
1239
|
-
IN: input array with UTF-8 string to prepare.
|
1240
|
-
|
1241
|
-
OUT: output variable with pointer to newly allocate string.
|
1242
|
-
|
1243
|
-
PROFILE: name of stringprep profile to use.
|
1244
|
-
|
1245
|
-
FLAGS: a ‘Stringprep_profile_flags’ value, or 0.
|
1246
|
-
|
1247
|
-
Prepare the input zero terminated UTF-8 string according to the
|
1248
|
-
stringprep profile, and return the result in a newly allocated
|
1249
|
-
variable.
|
1250
|
-
|
1251
|
-
Note that you must convert strings entered in the systems locale
|
1252
|
-
into UTF-8 before using this function, see
|
1253
|
-
‘stringprep_locale_to_utf8()’ .
|
1254
|
-
|
1255
|
-
The output ‘out’ variable must be deallocated by the caller.
|
1256
|
-
|
1257
|
-
The ‘flags’ are one of ‘Stringprep_profile_flags’ values, or 0.
|
1258
|
-
|
1259
|
-
The ‘profile’ specifies the name of the stringprep profile to use.
|
1260
|
-
It must be one of the internally supported stringprep profiles.
|
1261
|
-
|
1262
|
-
Return value: Returns ‘STRINGPREP_OK’ iff successful, or an error
|
1263
|
-
code.
|
1264
|
-
|
1265
|
-
4.5 Error Handling
|
1266
|
-
==================
|
1267
|
-
|
1268
|
-
stringprep_strerror
|
1269
|
-
-------------------
|
1270
|
-
|
1271
|
-
-- Function: const char * stringprep_strerror (Stringprep_rc RC)
|
1272
|
-
RC: a ‘Stringprep_rc’ return code.
|
1273
|
-
|
1274
|
-
Convert a return code integer to a text string. This string can be
|
1275
|
-
used to output a diagnostic message to the user.
|
1276
|
-
|
1277
|
-
*STRINGPREP_OK:* Successful operation. This value is guaranteed to
|
1278
|
-
always be zero, the remaining ones are only guaranteed to hold
|
1279
|
-
non-zero values, for logical comparison purposes.
|
1280
|
-
|
1281
|
-
*STRINGPREP_CONTAINS_UNASSIGNED:* String contain unassigned Unicode
|
1282
|
-
code points, which is forbidden by the profile.
|
1283
|
-
|
1284
|
-
*STRINGPREP_CONTAINS_PROHIBITED:* String contain code points
|
1285
|
-
prohibited by the profile.
|
1286
|
-
|
1287
|
-
*STRINGPREP_BIDI_BOTH_L_AND_RAL:* String contain code points with
|
1288
|
-
conflicting bidirection category.
|
1289
|
-
|
1290
|
-
*STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:* Leading and trailing character
|
1291
|
-
in string not of proper bidirectional category.
|
1292
|
-
|
1293
|
-
*STRINGPREP_BIDI_CONTAINS_PROHIBITED:* Contains prohibited code
|
1294
|
-
points detected by bidirectional code.
|
1295
|
-
|
1296
|
-
*STRINGPREP_TOO_SMALL_BUFFER:* Buffer handed to function was too
|
1297
|
-
small. This usually indicate a problem in the calling application.
|
1298
|
-
|
1299
|
-
*STRINGPREP_PROFILE_ERROR:* The stringprep profile was
|
1300
|
-
inconsistent. This usually indicate an internal error in the
|
1301
|
-
library.
|
1302
|
-
|
1303
|
-
*STRINGPREP_FLAG_ERROR:* The supplied flag conflicted with profile.
|
1304
|
-
This usually indicate a problem in the calling application.
|
1305
|
-
|
1306
|
-
*STRINGPREP_UNKNOWN_PROFILE:* The supplied profile name was not
|
1307
|
-
known to the library.
|
1308
|
-
|
1309
|
-
*STRINGPREP_ICONV_ERROR:* Could not convert string in locale
|
1310
|
-
encoding.
|
1311
|
-
|
1312
|
-
*STRINGPREP_NFKC_FAILED:* The Unicode NFKC operation failed. This
|
1313
|
-
usually indicate an internal error in the library.
|
1314
|
-
|
1315
|
-
*STRINGPREP_MALLOC_ERROR:* The ‘malloc()’ was out of memory. This
|
1316
|
-
is usually a fatal error.
|
1317
|
-
|
1318
|
-
Return value: Returns a pointer to a statically allocated string
|
1319
|
-
containing a description of the error with the return code ‘rc’ .
|
1320
|
-
|
1321
|
-
4.6 Stringprep Profile Macros
|
1322
|
-
=============================
|
1323
|
-
|
1324
|
-
-- Function: int stringprep_nameprep_no_unassigned (char * IN, int
|
1325
|
-
MAXLEN)
|
1326
|
-
|
1327
|
-
IN: input/ouput array with string to prepare.
|
1328
|
-
|
1329
|
-
MAXLEN: maximum length of input/output array.
|
1330
|
-
|
1331
|
-
Prepare the input UTF-8 string according to the nameprep profile.
|
1332
|
-
The AllowUnassigned flag is false, use ‘stringprep_nameprep’ for
|
1333
|
-
true AllowUnassigned. Returns 0 iff successful, or an error code.
|
1334
|
-
|
1335
|
-
-- Function: int stringprep_iscsi (char * IN, int MAXLEN)
|
1336
|
-
|
1337
|
-
IN: input/ouput array with string to prepare.
|
1338
|
-
|
1339
|
-
MAXLEN: maximum length of input/output array.
|
1340
|
-
|
1341
|
-
Prepare the input UTF-8 string according to the draft iSCSI
|
1342
|
-
stringprep profile. Returns 0 iff successful, or an error code.
|
1343
|
-
|
1344
|
-
-- Function: int stringprep_plain (char * IN, int MAXLEN)
|
1345
|
-
|
1346
|
-
IN: input/ouput array with string to prepare.
|
1347
|
-
|
1348
|
-
MAXLEN: maximum length of input/output array.
|
1349
|
-
|
1350
|
-
Prepare the input UTF-8 string according to the draft SASL
|
1351
|
-
ANONYMOUS profile. Returns 0 iff successful, or an error code.
|
1352
|
-
|
1353
|
-
-- Function: int stringprep_xmpp_nodeprep (char * IN, int MAXLEN)
|
1354
|
-
|
1355
|
-
IN: input/ouput array with string to prepare.
|
1356
|
-
|
1357
|
-
MAXLEN: maximum length of input/output array.
|
1358
|
-
|
1359
|
-
Prepare the input UTF-8 string according to the draft XMPP node
|
1360
|
-
identifier profile. Returns 0 iff successful, or an error code.
|
1361
|
-
|
1362
|
-
-- Function: int stringprep_xmpp_resourceprep (char * IN, int MAXLEN)
|
1363
|
-
|
1364
|
-
IN: input/ouput array with string to prepare.
|
1365
|
-
|
1366
|
-
MAXLEN: maximum length of input/output array.
|
1367
|
-
|
1368
|
-
Prepare the input UTF-8 string according to the draft XMPP resource
|
1369
|
-
identifier profile. Returns 0 iff successful, or an error code.
|
1370
|
-
|
1371
|
-
|
1372
|
-
File: libidn.info, Node: Punycode Functions, Next: IDNA Functions, Prev: Stringprep Functions, Up: Top
|
1373
|
-
|
1374
|
-
5 Punycode Functions
|
1375
|
-
********************
|
1376
|
-
|
1377
|
-
Punycode is a simple and efficient transfer encoding syntax designed for
|
1378
|
-
use with Internationalized Domain Names in Applications. It uniquely
|
1379
|
-
and reversibly transforms a Unicode string into an ASCII string. ASCII
|
1380
|
-
characters in the Unicode string are represented literally, and
|
1381
|
-
non-ASCII characters are represented by ASCII characters that are
|
1382
|
-
allowed in host name labels (letters, digits, and hyphens). A general
|
1383
|
-
algorithm called Bootstring allows a string of basic code points to
|
1384
|
-
uniquely represent any string of code points drawn from a larger set.
|
1385
|
-
Punycode is an instance of Bootstring that uses particular parameter
|
1386
|
-
values, appropriate for IDNA.
|
1387
|
-
|
1388
|
-
5.1 Header file ‘punycode.h’
|
1389
|
-
============================
|
1390
|
-
|
1391
|
-
To use the functions explained in this chapter, you need to include the
|
1392
|
-
file ‘punycode.h’ using:
|
1393
|
-
|
1394
|
-
#include <punycode.h>
|
1395
|
-
|
1396
|
-
5.2 Unicode Code Point Data Type
|
1397
|
-
================================
|
1398
|
-
|
1399
|
-
The punycode function uses a special type to denote Unicode code points.
|
1400
|
-
It is guaranteed to always be a 32 bit unsigned integer.
|
1401
|
-
|
1402
|
-
-- Punycode Unicode code point: uint32_t punycode_uint
|
1403
|
-
A unsigned integer that hold Unicode code points.
|
1404
|
-
|
1405
|
-
5.3 Core Functions
|
1406
|
-
==================
|
1407
|
-
|
1408
|
-
Note that the current implementation will fail if the ‘input_length’
|
1409
|
-
exceed 4294967295 (the size of ‘punycode_uint’). This restriction may
|
1410
|
-
be removed in the future. Meanwhile applications are encouraged to not
|
1411
|
-
depend on this problem, and use ‘sizeof’ to initialize ‘input_length’
|
1412
|
-
and ‘output_length’.
|
1413
|
-
|
1414
|
-
The functions provided are the following two entry points:
|
1415
|
-
|
1416
|
-
punycode_encode
|
1417
|
-
---------------
|
1418
|
-
|
1419
|
-
-- Function: int punycode_encode (size_t INPUT_LENGTH, const
|
1420
|
-
punycode_uint [] INPUT, const unsigned char [] CASE_FLAGS,
|
1421
|
-
size_t * OUTPUT_LENGTH, char [] OUTPUT)
|
1422
|
-
INPUT_LENGTH: The number of code points in the ‘input’ array and
|
1423
|
-
the number of flags in the ‘case_flags’ array.
|
1424
|
-
|
1425
|
-
INPUT: An array of code points. They are presumed to be Unicode
|
1426
|
-
code points, but that is not strictly REQUIRED. The array contains
|
1427
|
-
code points, not code units. UTF-16 uses code units D800 through
|
1428
|
-
DFFF to refer to code points 10000..10FFFF. The code points
|
1429
|
-
D800..DFFF do not occur in any valid Unicode string. The code
|
1430
|
-
points that can occur in Unicode strings (0..D7FF and E000..10FFFF)
|
1431
|
-
are also called Unicode scalar values.
|
1432
|
-
|
1433
|
-
CASE_FLAGS: A ‘NULL’ pointer or an array of boolean values parallel
|
1434
|
-
to the ‘input’ array. Nonzero (true, flagged) suggests that the
|
1435
|
-
corresponding Unicode character be forced to uppercase after being
|
1436
|
-
decoded (if possible), and zero (false, unflagged) suggests that it
|
1437
|
-
be forced to lowercase (if possible). ASCII code points (0..7F)
|
1438
|
-
are encoded literally, except that ASCII letters are forced to
|
1439
|
-
uppercase or lowercase according to the corresponding case flags.
|
1440
|
-
If ‘case_flags’ is a ‘NULL’ pointer then ASCII letters are left as
|
1441
|
-
they are, and other code points are treated as unflagged.
|
1442
|
-
|
1443
|
-
OUTPUT_LENGTH: The caller passes in the maximum number of ASCII
|
1444
|
-
code points that it can receive. On successful return it will
|
1445
|
-
contain the number of ASCII code points actually output.
|
1446
|
-
|
1447
|
-
OUTPUT: An array of ASCII code points. It is *not*
|
1448
|
-
null-terminated; it will contain zeros if and only if the ‘input’
|
1449
|
-
contains zeros. (Of course the caller can leave room for a
|
1450
|
-
terminator and add one if needed.)
|
1451
|
-
|
1452
|
-
Converts a sequence of code points (presumed to be Unicode code
|
1453
|
-
points) to Punycode.
|
1454
|
-
|
1455
|
-
Return value: The return value can be any of the ‘Punycode_status’
|
1456
|
-
values defined above except ‘PUNYCODE_BAD_INPUT’ . If not
|
1457
|
-
‘PUNYCODE_SUCCESS’ , then ‘output_size’ and ‘output’ might contain
|
1458
|
-
garbage.
|
1459
|
-
|
1460
|
-
punycode_decode
|
1461
|
-
---------------
|
1462
|
-
|
1463
|
-
-- Function: int punycode_decode (size_t INPUT_LENGTH, const char []
|
1464
|
-
INPUT, size_t * OUTPUT_LENGTH, punycode_uint [] OUTPUT,
|
1465
|
-
unsigned char [] CASE_FLAGS)
|
1466
|
-
INPUT_LENGTH: The number of ASCII code points in the ‘input’ array.
|
1467
|
-
|
1468
|
-
INPUT: An array of ASCII code points (0..7F).
|
1469
|
-
|
1470
|
-
OUTPUT_LENGTH: The caller passes in the maximum number of code
|
1471
|
-
points that it can receive into the ‘output’ array (which is also
|
1472
|
-
the maximum number of flags that it can receive into the
|
1473
|
-
‘case_flags’ array, if ‘case_flags’ is not a ‘NULL’ pointer). On
|
1474
|
-
successful return it will contain the number of code points
|
1475
|
-
actually output (which is also the number of flags actually output,
|
1476
|
-
if case_flags is not a null pointer). The decoder will never need
|
1477
|
-
to output more code points than the number of ASCII code points in
|
1478
|
-
the input, because of the way the encoding is defined. The number
|
1479
|
-
of code points output cannot exceed the maximum possible value of a
|
1480
|
-
punycode_uint, even if the supplied ‘output_length’ is greater than
|
1481
|
-
that.
|
1482
|
-
|
1483
|
-
OUTPUT: An array of code points like the input argument of
|
1484
|
-
‘punycode_encode()’ (see above).
|
1485
|
-
|
1486
|
-
CASE_FLAGS: A ‘NULL’ pointer (if the flags are not needed by the
|
1487
|
-
caller) or an array of boolean values parallel to the ‘output’
|
1488
|
-
array. Nonzero (true, flagged) suggests that the corresponding
|
1489
|
-
Unicode character be forced to uppercase by the caller (if
|
1490
|
-
possible), and zero (false, unflagged) suggests that it be forced
|
1491
|
-
to lowercase (if possible). ASCII code points (0..7F) are output
|
1492
|
-
already in the proper case, but their flags will be set
|
1493
|
-
appropriately so that applying the flags would be harmless.
|
1494
|
-
|
1495
|
-
Converts Punycode to a sequence of code points (presumed to be
|
1496
|
-
Unicode code points).
|
1497
|
-
|
1498
|
-
Return value: The return value can be any of the ‘Punycode_status’
|
1499
|
-
values defined above. If not ‘PUNYCODE_SUCCESS’ , then
|
1500
|
-
‘output_length’ , ‘output’ , and ‘case_flags’ might contain
|
1501
|
-
garbage.
|
1502
|
-
|
1503
|
-
5.4 Error Handling
|
1504
|
-
==================
|
1505
|
-
|
1506
|
-
punycode_strerror
|
1507
|
-
-----------------
|
1508
|
-
|
1509
|
-
-- Function: const char * punycode_strerror (Punycode_status RC)
|
1510
|
-
RC: an ‘Punycode_status’ return code.
|
1511
|
-
|
1512
|
-
Convert a return code integer to a text string. This string can be
|
1513
|
-
used to output a diagnostic message to the user.
|
1514
|
-
|
1515
|
-
*PUNYCODE_SUCCESS:* Successful operation. This value is guaranteed
|
1516
|
-
to always be zero, the remaining ones are only guaranteed to hold
|
1517
|
-
non-zero values, for logical comparison purposes.
|
1518
|
-
|
1519
|
-
*PUNYCODE_BAD_INPUT:* Input is invalid.
|
1520
|
-
|
1521
|
-
*PUNYCODE_BIG_OUTPUT:* Output would exceed the space provided.
|
1522
|
-
|
1523
|
-
*PUNYCODE_OVERFLOW:* Input needs wider integers to process.
|
1524
|
-
|
1525
|
-
Return value: Returns a pointer to a statically allocated string
|
1526
|
-
containing a description of the error with the return code ‘rc’ .
|
1527
|
-
|
1528
|
-
|
1529
|
-
File: libidn.info, Node: IDNA Functions, Next: TLD Functions, Prev: Punycode Functions, Up: Top
|
1530
|
-
|
1531
|
-
6 IDNA Functions
|
1532
|
-
****************
|
1533
|
-
|
1534
|
-
Until now, there has been no standard method for domain names to use
|
1535
|
-
characters outside the ASCII repertoire. The IDNA document defines
|
1536
|
-
internationalized domain names (IDNs) and a mechanism called IDNA for
|
1537
|
-
handling them in a standard fashion. IDNs use characters drawn from a
|
1538
|
-
large repertoire (Unicode), but IDNA allows the non-ASCII characters to
|
1539
|
-
be represented using only the ASCII characters already allowed in
|
1540
|
-
so-called host names today. This backward-compatible representation is
|
1541
|
-
required in existing protocols like DNS, so that IDNs can be introduced
|
1542
|
-
with no changes to the existing infrastructure. IDNA is only meant for
|
1543
|
-
processing domain names, not free text.
|
1544
|
-
|
1545
|
-
6.1 Header file ‘idna.h’
|
1546
|
-
========================
|
1547
|
-
|
1548
|
-
To use the functions explained in this chapter, you need to include the
|
1549
|
-
file ‘idna.h’ using:
|
1550
|
-
|
1551
|
-
#include <idna.h>
|
1552
|
-
|
1553
|
-
6.2 Control Flags
|
1554
|
-
=================
|
1555
|
-
|
1556
|
-
The IDNA ‘flags’ parameter can take on the following values, or a
|
1557
|
-
bit-wise inclusive or of any subset of the parameters:
|
1558
|
-
|
1559
|
-
-- Return code: Idna_flags IDNA_ALLOW_UNASSIGNED
|
1560
|
-
Allow unassigned Unicode code points.
|
1561
|
-
|
1562
|
-
-- Return code: Idna_flags IDNA_USE_STD3_ASCII_RULES
|
1563
|
-
Check output to make sure it is a STD3 conforming host name.
|
1564
|
-
|
1565
|
-
6.3 Prefix String
|
1566
|
-
=================
|
1567
|
-
|
1568
|
-
-- Macro: #define IDNA_ACE_PREFIX
|
1569
|
-
String with the official IDNA prefix, ‘xn--’.
|
1570
|
-
|
1571
|
-
6.4 Core Functions
|
1572
|
-
==================
|
1573
|
-
|
1574
|
-
The idea behind the IDNA function names are as follows: the
|
1575
|
-
‘idna_to_ascii_4i’ and ‘idna_to_unicode_44i’ functions are the core IDNA
|
1576
|
-
primitives. The ‘4’ indicate that the function takes UCS-4 strings
|
1577
|
-
(i.e., Unicode code points encoded in a 32-bit unsigned integer type) of
|
1578
|
-
the specified length. The ‘i’ indicate that the data is written
|
1579
|
-
“inline” into the buffer. This means the caller is responsible for
|
1580
|
-
allocating (and de-allocating) the string, and providing the library
|
1581
|
-
with the allocated length of the string. The output length is written
|
1582
|
-
in the output length variable. The remaining functions all contain the
|
1583
|
-
‘z’ indicator, which means the strings are zero terminated. All output
|
1584
|
-
strings are allocated by the library, and must be de-allocated by the
|
1585
|
-
caller. The ‘4’ indicator again means that the string is UCS-4, the ‘8’
|
1586
|
-
means the strings are UTF-8 and the ‘l’ indicator means the strings are
|
1587
|
-
encoded in the encoding used by the current locale.
|
1588
|
-
|
1589
|
-
The functions provided are the following entry points:
|
1590
|
-
|
1591
|
-
idna_to_ascii_4i
|
1592
|
-
----------------
|
1593
|
-
|
1594
|
-
-- Function: int idna_to_ascii_4i (const uint32_t * IN, size_t INLEN,
|
1595
|
-
char * OUT, int FLAGS)
|
1596
|
-
IN: input array with unicode code points.
|
1597
|
-
|
1598
|
-
INLEN: length of input array with unicode code points.
|
1599
|
-
|
1600
|
-
OUT: output zero terminated string that must have room for at least
|
1601
|
-
63 characters plus the terminating zero.
|
1602
|
-
|
1603
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1604
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1605
|
-
|
1606
|
-
The ToASCII operation takes a sequence of Unicode code points that
|
1607
|
-
make up one domain label and transforms it into a sequence of code
|
1608
|
-
points in the ASCII range (0..7F). If ToASCII succeeds, the
|
1609
|
-
original sequence and the resulting sequence are equivalent labels.
|
1610
|
-
|
1611
|
-
It is important to note that the ToASCII operation can fail.
|
1612
|
-
ToASCII fails if any step of it fails. If any step of the ToASCII
|
1613
|
-
operation fails on any label in a domain name, that domain name
|
1614
|
-
MUST NOT be used as an internationalized domain name. The method
|
1615
|
-
for deadling with this failure is application-specific.
|
1616
|
-
|
1617
|
-
The inputs to ToASCII are a sequence of code points, the
|
1618
|
-
AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output
|
1619
|
-
of ToASCII is either a sequence of ASCII code points or a failure
|
1620
|
-
condition.
|
1621
|
-
|
1622
|
-
ToASCII never alters a sequence of code points that are all in the
|
1623
|
-
ASCII range to begin with (although it could fail). Applying the
|
1624
|
-
ToASCII operation multiple times has exactly the same effect as
|
1625
|
-
applying it just once.
|
1626
|
-
|
1627
|
-
Return value: Returns 0 on success, or an ‘Idna_rc’ error code.
|
1628
|
-
|
1629
|
-
idna_to_unicode_44i
|
1630
|
-
-------------------
|
1631
|
-
|
1632
|
-
-- Function: int idna_to_unicode_44i (const uint32_t * IN, size_t
|
1633
|
-
INLEN, uint32_t * OUT, size_t * OUTLEN, int FLAGS)
|
1634
|
-
IN: input array with unicode code points.
|
1635
|
-
|
1636
|
-
INLEN: length of input array with unicode code points.
|
1637
|
-
|
1638
|
-
OUT: output array with unicode code points.
|
1639
|
-
|
1640
|
-
OUTLEN: on input, maximum size of output array with unicode code
|
1641
|
-
points, on exit, actual size of output array with unicode code
|
1642
|
-
points.
|
1643
|
-
|
1644
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1645
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1646
|
-
|
1647
|
-
The ToUnicode operation takes a sequence of Unicode code points
|
1648
|
-
that make up one domain label and returns a sequence of Unicode
|
1649
|
-
code points. If the input sequence is a label in ACE form, then
|
1650
|
-
the result is an equivalent internationalized label that is not in
|
1651
|
-
ACE form, otherwise the original sequence is returned unaltered.
|
1652
|
-
|
1653
|
-
ToUnicode never fails. If any step fails, then the original input
|
1654
|
-
sequence is returned immediately in that step.
|
1655
|
-
|
1656
|
-
The Punycode decoder can never output more code points than it
|
1657
|
-
inputs, but Nameprep can, and therefore ToUnicode can. Note that
|
1658
|
-
the number of octets needed to represent a sequence of code points
|
1659
|
-
depends on the particular character encoding used.
|
1660
|
-
|
1661
|
-
The inputs to ToUnicode are a sequence of code points, the
|
1662
|
-
AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output
|
1663
|
-
of ToUnicode is always a sequence of Unicode code points.
|
1664
|
-
|
1665
|
-
Return value: Returns ‘Idna_rc’ error condition, but it must only
|
1666
|
-
be used for debugging purposes. The output buffer is always
|
1667
|
-
guaranteed to contain the correct data according to the
|
1668
|
-
specification (sans malloc induced errors). NB! This means that
|
1669
|
-
you normally ignore the return code from this function, as checking
|
1670
|
-
it means breaking the standard.
|
1671
|
-
|
1672
|
-
6.5 Simplified ToASCII Interface
|
1673
|
-
================================
|
1674
|
-
|
1675
|
-
idna_to_ascii_4z
|
1676
|
-
----------------
|
1677
|
-
|
1678
|
-
-- Function: int idna_to_ascii_4z (const uint32_t * INPUT, char **
|
1679
|
-
OUTPUT, int FLAGS)
|
1680
|
-
INPUT: zero terminated input Unicode string.
|
1681
|
-
|
1682
|
-
OUTPUT: pointer to newly allocated output string.
|
1683
|
-
|
1684
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1685
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1686
|
-
|
1687
|
-
Convert UCS-4 domain name to ASCII string. The domain name may
|
1688
|
-
contain several labels, separated by dots. The output buffer must
|
1689
|
-
be deallocated by the caller.
|
1690
|
-
|
1691
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1692
|
-
|
1693
|
-
idna_to_ascii_8z
|
1694
|
-
----------------
|
1695
|
-
|
1696
|
-
-- Function: int idna_to_ascii_8z (const char * INPUT, char ** OUTPUT,
|
1697
|
-
int FLAGS)
|
1698
|
-
INPUT: zero terminated input UTF-8 string.
|
1699
|
-
|
1700
|
-
OUTPUT: pointer to newly allocated output string.
|
1701
|
-
|
1702
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1703
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1704
|
-
|
1705
|
-
Convert UTF-8 domain name to ASCII string. The domain name may
|
1706
|
-
contain several labels, separated by dots. The output buffer must
|
1707
|
-
be deallocated by the caller.
|
1708
|
-
|
1709
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1710
|
-
|
1711
|
-
idna_to_ascii_lz
|
1712
|
-
----------------
|
1713
|
-
|
1714
|
-
-- Function: int idna_to_ascii_lz (const char * INPUT, char ** OUTPUT,
|
1715
|
-
int FLAGS)
|
1716
|
-
INPUT: zero terminated input string encoded in the current locale’s
|
1717
|
-
character set.
|
1718
|
-
|
1719
|
-
OUTPUT: pointer to newly allocated output string.
|
1720
|
-
|
1721
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1722
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1723
|
-
|
1724
|
-
Convert domain name in the locale’s encoding to ASCII string. The
|
1725
|
-
domain name may contain several labels, separated by dots. The
|
1726
|
-
output buffer must be deallocated by the caller.
|
1727
|
-
|
1728
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1729
|
-
|
1730
|
-
6.6 Simplified ToUnicode Interface
|
1731
|
-
==================================
|
1732
|
-
|
1733
|
-
idna_to_unicode_4z4z
|
1734
|
-
--------------------
|
1735
|
-
|
1736
|
-
-- Function: int idna_to_unicode_4z4z (const uint32_t * INPUT, uint32_t
|
1737
|
-
** OUTPUT, int FLAGS)
|
1738
|
-
INPUT: zero-terminated Unicode string.
|
1739
|
-
|
1740
|
-
OUTPUT: pointer to newly allocated output Unicode string.
|
1741
|
-
|
1742
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1743
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1744
|
-
|
1745
|
-
Convert possibly ACE encoded domain name in UCS-4 format into a
|
1746
|
-
UCS-4 string. The domain name may contain several labels,
|
1747
|
-
separated by dots. The output buffer must be deallocated by the
|
1748
|
-
caller.
|
1749
|
-
|
1750
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1751
|
-
|
1752
|
-
idna_to_unicode_8z4z
|
1753
|
-
--------------------
|
1754
|
-
|
1755
|
-
-- Function: int idna_to_unicode_8z4z (const char * INPUT, uint32_t **
|
1756
|
-
OUTPUT, int FLAGS)
|
1757
|
-
INPUT: zero-terminated UTF-8 string.
|
1758
|
-
|
1759
|
-
OUTPUT: pointer to newly allocated output Unicode string.
|
1760
|
-
|
1761
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1762
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1763
|
-
|
1764
|
-
Convert possibly ACE encoded domain name in UTF-8 format into a
|
1765
|
-
UCS-4 string. The domain name may contain several labels,
|
1766
|
-
separated by dots. The output buffer must be deallocated by the
|
1767
|
-
caller.
|
1768
|
-
|
1769
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1770
|
-
|
1771
|
-
idna_to_unicode_8z8z
|
1772
|
-
--------------------
|
1773
|
-
|
1774
|
-
-- Function: int idna_to_unicode_8z8z (const char * INPUT, char **
|
1775
|
-
OUTPUT, int FLAGS)
|
1776
|
-
INPUT: zero-terminated UTF-8 string.
|
1777
|
-
|
1778
|
-
OUTPUT: pointer to newly allocated output UTF-8 string.
|
1779
|
-
|
1780
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1781
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1782
|
-
|
1783
|
-
Convert possibly ACE encoded domain name in UTF-8 format into a
|
1784
|
-
UTF-8 string. The domain name may contain several labels,
|
1785
|
-
separated by dots. The output buffer must be deallocated by the
|
1786
|
-
caller.
|
1787
|
-
|
1788
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1789
|
-
|
1790
|
-
idna_to_unicode_8zlz
|
1791
|
-
--------------------
|
1792
|
-
|
1793
|
-
-- Function: int idna_to_unicode_8zlz (const char * INPUT, char **
|
1794
|
-
OUTPUT, int FLAGS)
|
1795
|
-
INPUT: zero-terminated UTF-8 string.
|
1796
|
-
|
1797
|
-
OUTPUT: pointer to newly allocated output string encoded in the
|
1798
|
-
current locale’s character set.
|
1799
|
-
|
1800
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1801
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1802
|
-
|
1803
|
-
Convert possibly ACE encoded domain name in UTF-8 format into a
|
1804
|
-
string encoded in the current locale’s character set. The domain
|
1805
|
-
name may contain several labels, separated by dots. The output
|
1806
|
-
buffer must be deallocated by the caller.
|
1807
|
-
|
1808
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1809
|
-
|
1810
|
-
idna_to_unicode_lzlz
|
1811
|
-
--------------------
|
1812
|
-
|
1813
|
-
-- Function: int idna_to_unicode_lzlz (const char * INPUT, char **
|
1814
|
-
OUTPUT, int FLAGS)
|
1815
|
-
INPUT: zero-terminated string encoded in the current locale’s
|
1816
|
-
character set.
|
1817
|
-
|
1818
|
-
OUTPUT: pointer to newly allocated output string encoded in the
|
1819
|
-
current locale’s character set.
|
1820
|
-
|
1821
|
-
FLAGS: an ‘Idna_flags’ value, e.g., ‘IDNA_ALLOW_UNASSIGNED’ or
|
1822
|
-
‘IDNA_USE_STD3_ASCII_RULES’ .
|
1823
|
-
|
1824
|
-
Convert possibly ACE encoded domain name in the locale’s character
|
1825
|
-
set into a string encoded in the current locale’s character set.
|
1826
|
-
The domain name may contain several labels, separated by dots. The
|
1827
|
-
output buffer must be deallocated by the caller.
|
1828
|
-
|
1829
|
-
Return value: Returns ‘IDNA_SUCCESS’ on success, or error code.
|
1830
|
-
|
1831
|
-
6.7 Error Handling
|
1832
|
-
==================
|
1833
|
-
|
1834
|
-
idna_strerror
|
1835
|
-
-------------
|
1836
|
-
|
1837
|
-
-- Function: const char * idna_strerror (Idna_rc RC)
|
1838
|
-
RC: an ‘Idna_rc’ return code.
|
1839
|
-
|
1840
|
-
Convert a return code integer to a text string. This string can be
|
1841
|
-
used to output a diagnostic message to the user.
|
1842
|
-
|
1843
|
-
*IDNA_SUCCESS:* Successful operation. This value is guaranteed to
|
1844
|
-
always be zero, the remaining ones are only guaranteed to hold
|
1845
|
-
non-zero values, for logical comparison purposes.
|
1846
|
-
|
1847
|
-
*IDNA_STRINGPREP_ERROR:* Error during string preparation.
|
1848
|
-
|
1849
|
-
*IDNA_PUNYCODE_ERROR:* Error during punycode operation.
|
1850
|
-
|
1851
|
-
*IDNA_CONTAINS_NON_LDH:* For IDNA_USE_STD3_ASCII_RULES, indicate
|
1852
|
-
that the string contains non-LDH ASCII characters.
|
1853
|
-
|
1854
|
-
*IDNA_CONTAINS_MINUS:* For IDNA_USE_STD3_ASCII_RULES, indicate that
|
1855
|
-
the string contains a leading or trailing hyphen-minus (U+002D).
|
1856
|
-
|
1857
|
-
*IDNA_INVALID_LENGTH:* The final output string is not within the
|
1858
|
-
(inclusive) range 1 to 63 characters.
|
1859
|
-
|
1860
|
-
*IDNA_NO_ACE_PREFIX:* The string does not contain the ACE prefix
|
1861
|
-
(for ToUnicode).
|
1862
|
-
|
1863
|
-
*IDNA_ROUNDTRIP_VERIFY_ERROR:* The ToASCII operation on output
|
1864
|
-
string does not equal the input.
|
1865
|
-
|
1866
|
-
*IDNA_CONTAINS_ACE_PREFIX:* The input contains the ACE prefix (for
|
1867
|
-
ToASCII).
|
1868
|
-
|
1869
|
-
*IDNA_ICONV_ERROR:* Could not convert string in locale encoding.
|
1870
|
-
|
1871
|
-
*IDNA_MALLOC_ERROR:* Could not allocate buffer (this is typically a
|
1872
|
-
fatal error).
|
1873
|
-
|
1874
|
-
*IDNA_DLOPEN_ERROR:* Could not dlopen the libcidn DSO (only used
|
1875
|
-
internally in libc).
|
1876
|
-
|
1877
|
-
Return value: Returns a pointer to a statically allocated string
|
1878
|
-
containing a description of the error with the return code ‘rc’ .
|
1879
|
-
|
1880
|
-
|
1881
|
-
File: libidn.info, Node: TLD Functions, Next: PR29 Functions, Prev: IDNA Functions, Up: Top
|
1882
|
-
|
1883
|
-
7 TLD Functions
|
1884
|
-
***************
|
1885
|
-
|
1886
|
-
Organizations that manage some Top Level Domains (TLDs) have published
|
1887
|
-
tables with characters they accept within the domain. The reason may be
|
1888
|
-
to reduce complexity that come from using the full Unicode range, and to
|
1889
|
-
protect themselves from future (backwards incompatible) changes in the
|
1890
|
-
IDN or Unicode specifications. Libidn implement an infrastructure for
|
1891
|
-
defining and checking strings against such tables. Libidn also ship
|
1892
|
-
some tables from TLDs that we have managed to get permission to use them
|
1893
|
-
from. Because these tables are even less static than Unicode or
|
1894
|
-
StringPrep tables, it is likely that they will be updated from time to
|
1895
|
-
time (even in backwards incompatible ways). The Libidn interface
|
1896
|
-
provide a “version” field for each TLD table, which can be compared for
|
1897
|
-
equality to guarantee the same operation over time.
|
1898
|
-
|
1899
|
-
From a design point of view, you can regard the TLD tables for IDN as
|
1900
|
-
the “localization” step that come after the “internationalization” step
|
1901
|
-
provided by the IETF standards.
|
1902
|
-
|
1903
|
-
The TLD functionality rely on up-to-date tables. The latest version
|
1904
|
-
of Libidn aim to provide these, but tables with unclear copying
|
1905
|
-
conditions, or generally experimental tables, are not included. Some
|
1906
|
-
such tables can be found at <https://github.com/gnuthor/tldchk>.
|
1907
|
-
|
1908
|
-
7.1 Header file ‘tld.h’
|
1909
|
-
=======================
|
1910
|
-
|
1911
|
-
To use the functions explained in this chapter, you need to include the
|
1912
|
-
file ‘tld.h’ using:
|
1913
|
-
|
1914
|
-
#include <tld.h>
|
1915
|
-
|
1916
|
-
7.2 Core Functions
|
1917
|
-
==================
|
1918
|
-
|
1919
|
-
tld_check_4t
|
1920
|
-
------------
|
1921
|
-
|
1922
|
-
-- Function: int tld_check_4t (const uint32_t * IN, size_t INLEN,
|
1923
|
-
size_t * ERRPOS, const Tld_table * TLD)
|
1924
|
-
IN: Array of unicode code points to process. Does not need to be
|
1925
|
-
zero terminated.
|
1926
|
-
|
1927
|
-
INLEN: Number of unicode code points.
|
1928
|
-
|
1929
|
-
ERRPOS: Position of offending character is returned here.
|
1930
|
-
|
1931
|
-
TLD: A ‘Tld_table’ data structure representing the restrictions for
|
1932
|
-
which the input should be tested.
|
1933
|
-
|
1934
|
-
Test each of the code points in ‘in’ for whether or not they are
|
1935
|
-
allowed by the data structure in ‘tld’ , return the position of the
|
1936
|
-
first character for which this is not the case in ‘errpos’ .
|
1937
|
-
|
1938
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all code
|
1939
|
-
points are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
1940
|
-
character is not allowed, or additional error codes on general
|
1941
|
-
failure conditions.
|
1942
|
-
|
1943
|
-
tld_check_4tz
|
1944
|
-
-------------
|
1945
|
-
|
1946
|
-
-- Function: int tld_check_4tz (const uint32_t * IN, size_t * ERRPOS,
|
1947
|
-
const Tld_table * TLD)
|
1948
|
-
IN: Zero terminated array of unicode code points to process.
|
1949
|
-
|
1950
|
-
ERRPOS: Position of offending character is returned here.
|
1951
|
-
|
1952
|
-
TLD: A ‘Tld_table’ data structure representing the restrictions for
|
1953
|
-
which the input should be tested.
|
1954
|
-
|
1955
|
-
Test each of the code points in ‘in’ for whether or not they are
|
1956
|
-
allowed by the data structure in ‘tld’ , return the position of the
|
1957
|
-
first character for which this is not the case in ‘errpos’ .
|
1958
|
-
|
1959
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all code
|
1960
|
-
points are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
1961
|
-
character is not allowed, or additional error codes on general
|
1962
|
-
failure conditions.
|
1963
|
-
|
1964
|
-
7.3 Utility Functions
|
1965
|
-
=====================
|
1966
|
-
|
1967
|
-
tld_get_4
|
1968
|
-
---------
|
1969
|
-
|
1970
|
-
-- Function: int tld_get_4 (const uint32_t * IN, size_t INLEN, char **
|
1971
|
-
OUT)
|
1972
|
-
IN: Array of unicode code points to process. Does not need to be
|
1973
|
-
zero terminated.
|
1974
|
-
|
1975
|
-
INLEN: Number of unicode code points.
|
1976
|
-
|
1977
|
-
OUT: Zero terminated ascii result string pointer.
|
1978
|
-
|
1979
|
-
Isolate the top-level domain of ‘in’ and return it as an ASCII
|
1980
|
-
string in ‘out’ .
|
1981
|
-
|
1982
|
-
Return value: Return ‘TLD_SUCCESS’ on success, or the corresponding
|
1983
|
-
‘Tld_rc’ error code otherwise.
|
1984
|
-
|
1985
|
-
tld_get_4z
|
1986
|
-
----------
|
1987
|
-
|
1988
|
-
-- Function: int tld_get_4z (const uint32_t * IN, char ** OUT)
|
1989
|
-
IN: Zero terminated array of unicode code points to process.
|
1990
|
-
|
1991
|
-
OUT: Zero terminated ascii result string pointer.
|
1992
|
-
|
1993
|
-
Isolate the top-level domain of ‘in’ and return it as an ASCII
|
1994
|
-
string in ‘out’ .
|
1995
|
-
|
1996
|
-
Return value: Return ‘TLD_SUCCESS’ on success, or the corresponding
|
1997
|
-
‘Tld_rc’ error code otherwise.
|
1998
|
-
|
1999
|
-
tld_get_z
|
2000
|
-
---------
|
2001
|
-
|
2002
|
-
-- Function: int tld_get_z (const char * IN, char ** OUT)
|
2003
|
-
IN: Zero terminated character array to process.
|
2004
|
-
|
2005
|
-
OUT: Zero terminated ascii result string pointer.
|
2006
|
-
|
2007
|
-
Isolate the top-level domain of ‘in’ and return it as an ASCII
|
2008
|
-
string in ‘out’ . The input string ‘in’ may be UTF-8, ISO-8859-1
|
2009
|
-
or any ASCII compatible character encoding.
|
2010
|
-
|
2011
|
-
Return value: Return ‘TLD_SUCCESS’ on success, or the corresponding
|
2012
|
-
‘Tld_rc’ error code otherwise.
|
2013
|
-
|
2014
|
-
tld_get_table
|
2015
|
-
-------------
|
2016
|
-
|
2017
|
-
-- Function: const Tld_table * tld_get_table (const char * TLD, const
|
2018
|
-
Tld_table ** TABLES)
|
2019
|
-
TLD: TLD name (e.g. "com") as zero terminated ASCII byte string.
|
2020
|
-
|
2021
|
-
TABLES: Zero terminated array of ‘Tld_table’ info-structures for
|
2022
|
-
TLDs.
|
2023
|
-
|
2024
|
-
Get the TLD table for a named TLD by searching through the given
|
2025
|
-
TLD table array.
|
2026
|
-
|
2027
|
-
Return value: Return structure corresponding to TLD ‘tld’ by going
|
2028
|
-
thru ‘tables’ , or return ‘NULL’ if no such structure is found.
|
2029
|
-
|
2030
|
-
tld_default_table
|
2031
|
-
-----------------
|
2032
|
-
|
2033
|
-
-- Function: const Tld_table * tld_default_table (const char * TLD,
|
2034
|
-
const Tld_table ** OVERRIDES)
|
2035
|
-
TLD: TLD name (e.g. "com") as zero terminated ASCII byte string.
|
2036
|
-
|
2037
|
-
OVERRIDES: Additional zero terminated array of ‘Tld_table’
|
2038
|
-
info-structures for TLDs, or ‘NULL’ to only use library deault
|
2039
|
-
tables.
|
2040
|
-
|
2041
|
-
Get the TLD table for a named TLD, using the internal defaults,
|
2042
|
-
possibly overrided by the (optional) supplied tables.
|
2043
|
-
|
2044
|
-
Return value: Return structure corresponding to TLD ‘tld_str’ ,
|
2045
|
-
first looking through ‘overrides’ then thru built-in list, or
|
2046
|
-
‘NULL’ if no such structure found.
|
2047
|
-
|
2048
|
-
7.4 High-Level Wrapper Functions
|
2049
|
-
================================
|
2050
|
-
|
2051
|
-
tld_check_4
|
2052
|
-
-----------
|
2053
|
-
|
2054
|
-
-- Function: int tld_check_4 (const uint32_t * IN, size_t INLEN, size_t
|
2055
|
-
* ERRPOS, const Tld_table ** OVERRIDES)
|
2056
|
-
IN: Array of unicode code points to process. Does not need to be
|
2057
|
-
zero terminated.
|
2058
|
-
|
2059
|
-
INLEN: Number of unicode code points.
|
2060
|
-
|
2061
|
-
ERRPOS: Position of offending character is returned here.
|
2062
|
-
|
2063
|
-
OVERRIDES: A ‘Tld_table’ array of additional domain restriction
|
2064
|
-
structures that complement and supersede the built-in information.
|
2065
|
-
|
2066
|
-
Test each of the code points in ‘in’ for whether or not they are
|
2067
|
-
allowed by the information in ‘overrides’ or by the built-in TLD
|
2068
|
-
restriction data. When data for the same TLD is available both
|
2069
|
-
internally and in ‘overrides’ , the information in ‘overrides’
|
2070
|
-
takes precedence. If several entries for a specific TLD are found,
|
2071
|
-
the first one is used. If ‘overrides’ is ‘NULL’ , only the
|
2072
|
-
built-in information is used. The position of the first offending
|
2073
|
-
character is returned in ‘errpos’ .
|
2074
|
-
|
2075
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all code
|
2076
|
-
points are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
2077
|
-
character is not allowed, or additional error codes on general
|
2078
|
-
failure conditions.
|
2079
|
-
|
2080
|
-
tld_check_4z
|
2081
|
-
------------
|
2082
|
-
|
2083
|
-
-- Function: int tld_check_4z (const uint32_t * IN, size_t * ERRPOS,
|
2084
|
-
const Tld_table ** OVERRIDES)
|
2085
|
-
IN: Zero-terminated array of unicode code points to process.
|
2086
|
-
|
2087
|
-
ERRPOS: Position of offending character is returned here.
|
2088
|
-
|
2089
|
-
OVERRIDES: A ‘Tld_table’ array of additional domain restriction
|
2090
|
-
structures that complement and supersede the built-in information.
|
2091
|
-
|
2092
|
-
Test each of the code points in ‘in’ for whether or not they are
|
2093
|
-
allowed by the information in ‘overrides’ or by the built-in TLD
|
2094
|
-
restriction data. When data for the same TLD is available both
|
2095
|
-
internally and in ‘overrides’ , the information in ‘overrides’
|
2096
|
-
takes precedence. If several entries for a specific TLD are found,
|
2097
|
-
the first one is used. If ‘overrides’ is ‘NULL’ , only the
|
2098
|
-
built-in information is used. The position of the first offending
|
2099
|
-
character is returned in ‘errpos’ .
|
2100
|
-
|
2101
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all code
|
2102
|
-
points are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
2103
|
-
character is not allowed, or additional error codes on general
|
2104
|
-
failure conditions.
|
2105
|
-
|
2106
|
-
tld_check_8z
|
2107
|
-
------------
|
2108
|
-
|
2109
|
-
-- Function: int tld_check_8z (const char * IN, size_t * ERRPOS, const
|
2110
|
-
Tld_table ** OVERRIDES)
|
2111
|
-
IN: Zero-terminated UTF8 string to process.
|
2112
|
-
|
2113
|
-
ERRPOS: Position of offending character is returned here.
|
2114
|
-
|
2115
|
-
OVERRIDES: A ‘Tld_table’ array of additional domain restriction
|
2116
|
-
structures that complement and supersede the built-in information.
|
2117
|
-
|
2118
|
-
Test each of the characters in ‘in’ for whether or not they are
|
2119
|
-
allowed by the information in ‘overrides’ or by the built-in TLD
|
2120
|
-
restriction data. When data for the same TLD is available both
|
2121
|
-
internally and in ‘overrides’ , the information in ‘overrides’
|
2122
|
-
takes precedence. If several entries for a specific TLD are found,
|
2123
|
-
the first one is used. If ‘overrides’ is ‘NULL’ , only the
|
2124
|
-
built-in information is used. The position of the first offending
|
2125
|
-
character is returned in ‘errpos’ . Note that the error position
|
2126
|
-
refers to the decoded character offset rather than the byte
|
2127
|
-
position in the string.
|
2128
|
-
|
2129
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all
|
2130
|
-
characters are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
2131
|
-
character is not allowed, or additional error codes on general
|
2132
|
-
failure conditions.
|
2133
|
-
|
2134
|
-
tld_check_lz
|
2135
|
-
------------
|
2136
|
-
|
2137
|
-
-- Function: int tld_check_lz (const char * IN, size_t * ERRPOS, const
|
2138
|
-
Tld_table ** OVERRIDES)
|
2139
|
-
IN: Zero-terminated string in the current locales encoding to
|
2140
|
-
process.
|
2141
|
-
|
2142
|
-
ERRPOS: Position of offending character is returned here.
|
2143
|
-
|
2144
|
-
OVERRIDES: A ‘Tld_table’ array of additional domain restriction
|
2145
|
-
structures that complement and supersede the built-in information.
|
2146
|
-
|
2147
|
-
Test each of the characters in ‘in’ for whether or not they are
|
2148
|
-
allowed by the information in ‘overrides’ or by the built-in TLD
|
2149
|
-
restriction data. When data for the same TLD is available both
|
2150
|
-
internally and in ‘overrides’ , the information in ‘overrides’
|
2151
|
-
takes precedence. If several entries for a specific TLD are found,
|
2152
|
-
the first one is used. If ‘overrides’ is ‘NULL’ , only the
|
2153
|
-
built-in information is used. The position of the first offending
|
2154
|
-
character is returned in ‘errpos’ . Note that the error position
|
2155
|
-
refers to the decoded character offset rather than the byte
|
2156
|
-
position in the string.
|
2157
|
-
|
2158
|
-
Return value: Returns the ‘Tld_rc’ value ‘TLD_SUCCESS’ if all
|
2159
|
-
characters are valid or when ‘tld’ is null, ‘TLD_INVALID’ if a
|
2160
|
-
character is not allowed, or additional error codes on general
|
2161
|
-
failure conditions.
|
2162
|
-
|
2163
|
-
7.5 Error Handling
|
2164
|
-
==================
|
2165
|
-
|
2166
|
-
tld_strerror
|
2167
|
-
------------
|
2168
|
-
|
2169
|
-
-- Function: const char * tld_strerror (Tld_rc RC)
|
2170
|
-
RC: tld return code
|
2171
|
-
|
2172
|
-
Convert a return code integer to a text string. This string can be
|
2173
|
-
used to output a diagnostic message to the user.
|
2174
|
-
|
2175
|
-
*TLD_SUCCESS:* Successful operation. This value is guaranteed to
|
2176
|
-
always be zero, the remaining ones are only guaranteed to hold
|
2177
|
-
non-zero values, for logical comparison purposes.
|
2178
|
-
|
2179
|
-
*TLD_INVALID:* Invalid character found.
|
2180
|
-
|
2181
|
-
*TLD_NODATA:* No input data was provided.
|
2182
|
-
|
2183
|
-
*TLD_MALLOC_ERROR:* Error during memory allocation.
|
2184
|
-
|
2185
|
-
*TLD_ICONV_ERROR:* Error during iconv string conversion.
|
2186
|
-
|
2187
|
-
*TLD_NO_TLD:* No top-level domain found in domain string.
|
2188
|
-
|
2189
|
-
Return value: Returns a pointer to a statically allocated string
|
2190
|
-
containing a description of the error with the return code ‘rc’ .
|
2191
|
-
|
2192
|
-
|
2193
|
-
File: libidn.info, Node: PR29 Functions, Next: Examples, Prev: TLD Functions, Up: Top
|
2194
|
-
|
2195
|
-
8 PR29 Functions
|
2196
|
-
****************
|
2197
|
-
|
2198
|
-
A deficiency in the specification of Unicode Normalization Forms has
|
2199
|
-
been found. The consequence is that some strings can be normalized into
|
2200
|
-
different strings by different implementations. In other words, two
|
2201
|
-
different implementations may return different output for the same input
|
2202
|
-
(because the interpretation of the specification is ambiguous).
|
2203
|
-
Further, an implementation invoked again on the one of the output
|
2204
|
-
strings may return a different string (because one of the interpretation
|
2205
|
-
of the ambiguous specification make normalization non-idempotent).
|
2206
|
-
Fortunately, only a select few character sequence exhibit this problem,
|
2207
|
-
and none of them are expected to occur in natural languages (due to
|
2208
|
-
different linguistic uses of the involved characters).
|
2209
|
-
|
2210
|
-
A full discussion of the problem may be found at:
|
2211
|
-
|
2212
|
-
<http://www.unicode.org/review/pr-29.html>
|
2213
|
-
|
2214
|
-
The PR29 functions below allow you to detect the problem sequence.
|
2215
|
-
So when would you want to use these functions? For most applications,
|
2216
|
-
such as those using Nameprep for IDN, this is likely only to be an
|
2217
|
-
interoperability problem. Thus, you may not want to care about it, as
|
2218
|
-
the character sequences will rarely occur naturally. However, if you
|
2219
|
-
are using a profile, such as SASLPrep, to process authentication tokens;
|
2220
|
-
authorization tokens; or passwords, there is a real danger that
|
2221
|
-
attackers may try to use the peculiarities in these strings to attack
|
2222
|
-
parts of your system. As only a small number of strings, and no
|
2223
|
-
naturally occurring strings, exhibit this problem, the conservative
|
2224
|
-
approach of rejecting the strings is recommended. If this approach is
|
2225
|
-
not used, you should instead verify that all parts of your system, that
|
2226
|
-
process the tokens and passwords, use a NFKC implementation that produce
|
2227
|
-
the same output for the same input.
|
2228
|
-
|
2229
|
-
Technically inclined readers may be interested in knowing more about
|
2230
|
-
the implementation aspects of the PR29 flaw. *Note PR29 discussion::.
|
2231
|
-
|
2232
|
-
8.1 Header file ‘pr29.h’
|
2233
|
-
========================
|
2234
|
-
|
2235
|
-
To use the functions explained in this chapter, you need to include the
|
2236
|
-
file ‘pr29.h’ using:
|
2237
|
-
|
2238
|
-
#include <pr29.h>
|
2239
|
-
|
2240
|
-
8.2 Core Functions
|
2241
|
-
==================
|
2242
|
-
|
2243
|
-
pr29_4
|
2244
|
-
------
|
2245
|
-
|
2246
|
-
-- Function: int pr29_4 (const uint32_t * IN, size_t LEN)
|
2247
|
-
IN: input array with unicode code points.
|
2248
|
-
|
2249
|
-
LEN: length of input array with unicode code points.
|
2250
|
-
|
2251
|
-
Check the input to see if it may be normalized into different
|
2252
|
-
strings by different NFKC implementations, due to an anomaly in the
|
2253
|
-
NFKC specifications.
|
2254
|
-
|
2255
|
-
Return value: Returns the ‘Pr29_rc’ value ‘PR29_SUCCESS’ on
|
2256
|
-
success, and ‘PR29_PROBLEM’ if the input sequence is a "problem
|
2257
|
-
sequence" (i.e., may be normalized into different strings by
|
2258
|
-
different implementations).
|
2259
|
-
|
2260
|
-
8.3 Utility Functions
|
2261
|
-
=====================
|
2262
|
-
|
2263
|
-
pr29_4z
|
2264
|
-
-------
|
2265
|
-
|
2266
|
-
-- Function: int pr29_4z (const uint32_t * IN)
|
2267
|
-
IN: zero terminated array of Unicode code points.
|
2268
|
-
|
2269
|
-
Check the input to see if it may be normalized into different
|
2270
|
-
strings by different NFKC implementations, due to an anomaly in the
|
2271
|
-
NFKC specifications.
|
2272
|
-
|
2273
|
-
Return value: Returns the ‘Pr29_rc’ value ‘PR29_SUCCESS’ on
|
2274
|
-
success, and ‘PR29_PROBLEM’ if the input sequence is a "problem
|
2275
|
-
sequence" (i.e., may be normalized into different strings by
|
2276
|
-
different implementations).
|
2277
|
-
|
2278
|
-
pr29_8z
|
2279
|
-
-------
|
2280
|
-
|
2281
|
-
-- Function: int pr29_8z (const char * IN)
|
2282
|
-
IN: zero terminated input UTF-8 string.
|
2283
|
-
|
2284
|
-
Check the input to see if it may be normalized into different
|
2285
|
-
strings by different NFKC implementations, due to an anomaly in the
|
2286
|
-
NFKC specifications.
|
2287
|
-
|
2288
|
-
Return value: Returns the ‘Pr29_rc’ value ‘PR29_SUCCESS’ on
|
2289
|
-
success, and ‘PR29_PROBLEM’ if the input sequence is a "problem
|
2290
|
-
sequence" (i.e., may be normalized into different strings by
|
2291
|
-
different implementations), or ‘PR29_STRINGPREP_ERROR’ if there was
|
2292
|
-
a problem converting the string from UTF-8 to UCS-4.
|
2293
|
-
|
2294
|
-
8.4 Error Handling
|
2295
|
-
==================
|
2296
|
-
|
2297
|
-
pr29_strerror
|
2298
|
-
-------------
|
2299
|
-
|
2300
|
-
-- Function: const char * pr29_strerror (Pr29_rc RC)
|
2301
|
-
RC: an ‘Pr29_rc’ return code.
|
2302
|
-
|
2303
|
-
Convert a return code integer to a text string. This string can be
|
2304
|
-
used to output a diagnostic message to the user.
|
2305
|
-
|
2306
|
-
*PR29_SUCCESS:* Successful operation. This value is guaranteed to
|
2307
|
-
always be zero, the remaining ones are only guaranteed to hold
|
2308
|
-
non-zero values, for logical comparison purposes.
|
2309
|
-
|
2310
|
-
*PR29_PROBLEM:* A problem sequence was encountered.
|
2311
|
-
|
2312
|
-
*PR29_STRINGPREP_ERROR:* The character set conversion failed (only
|
2313
|
-
for ‘pr29_8z()’ ).
|
2314
|
-
|
2315
|
-
Return value: Returns a pointer to a statically allocated string
|
2316
|
-
containing a description of the error with the return code ‘rc’ .
|
2317
|
-
|
2318
|
-
|
2319
|
-
File: libidn.info, Node: Examples, Next: Invoking idn, Prev: PR29 Functions, Up: Top
|
2320
|
-
|
2321
|
-
9 Examples
|
2322
|
-
**********
|
2323
|
-
|
2324
|
-
This chapter contains example code which illustrate how ‘Libidn’ can be
|
2325
|
-
used when writing your own application.
|
2326
|
-
|
2327
|
-
* Menu:
|
2328
|
-
|
2329
|
-
* Example 1:: Example using stringprep.
|
2330
|
-
* Example 2:: Example using punycode.
|
2331
|
-
* Example 3:: Example using IDNA ToASCII.
|
2332
|
-
* Example 4:: Example using IDNA ToUnicode.
|
2333
|
-
* Example 5:: Example using TLD checking.
|
2334
|
-
|
2335
|
-
|
2336
|
-
File: libidn.info, Node: Example 1, Next: Example 2, Up: Examples
|
2337
|
-
|
2338
|
-
9.1 Example 1
|
2339
|
-
=============
|
2340
|
-
|
2341
|
-
This example demonstrates how the stringprep functions are used.
|
2342
|
-
|
2343
|
-
/* example.c --- Example code showing how to use stringprep().
|
2344
|
-
* Copyright (C) 2002-2016 Simon Josefsson
|
2345
|
-
*
|
2346
|
-
* This file is part of GNU Libidn.
|
2347
|
-
*
|
2348
|
-
* This program is free software: you can redistribute it and/or modify
|
2349
|
-
* it under the terms of the GNU General Public License as published by
|
2350
|
-
* the Free Software Foundation, either version 3 of the License, or
|
2351
|
-
* (at your option) any later version.
|
2352
|
-
*
|
2353
|
-
* This program is distributed in the hope that it will be useful,
|
2354
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2355
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2356
|
-
* GNU General Public License for more details.
|
2357
|
-
*
|
2358
|
-
* You should have received a copy of the GNU General Public License
|
2359
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2360
|
-
*
|
2361
|
-
*/
|
2362
|
-
|
2363
|
-
#include <stdio.h>
|
2364
|
-
#include <stdlib.h>
|
2365
|
-
#include <string.h>
|
2366
|
-
#include <locale.h> /* setlocale() */
|
2367
|
-
#include <stringprep.h>
|
2368
|
-
|
2369
|
-
/*
|
2370
|
-
* Compiling using libtool and pkg-config is recommended:
|
2371
|
-
*
|
2372
|
-
* $ libtool cc -o example example.c `pkg-config --cflags --libs libidn`
|
2373
|
-
* $ ./example
|
2374
|
-
* Input string encoded as `ISO-8859-1': ª
|
2375
|
-
* Before locale2utf8 (length 2): aa 0a
|
2376
|
-
* Before stringprep (length 3): c2 aa 0a
|
2377
|
-
* After stringprep (length 2): 61 0a
|
2378
|
-
* $
|
2379
|
-
*
|
2380
|
-
*/
|
2381
|
-
|
2382
|
-
int
|
2383
|
-
main (void)
|
2384
|
-
{
|
2385
|
-
char buf[BUFSIZ];
|
2386
|
-
char *p;
|
2387
|
-
int rc;
|
2388
|
-
size_t i;
|
2389
|
-
|
2390
|
-
setlocale (LC_ALL, "");
|
2391
|
-
|
2392
|
-
printf ("Input string encoded as `%s': ", stringprep_locale_charset ());
|
2393
|
-
fflush (stdout);
|
2394
|
-
if (!fgets (buf, BUFSIZ, stdin))
|
2395
|
-
perror ("fgets");
|
2396
|
-
buf[strlen (buf) - 1] = '\0';
|
2397
|
-
|
2398
|
-
printf ("Before locale2utf8 (length %ld): ", (long int) strlen (buf));
|
2399
|
-
for (i = 0; i < strlen (buf); i++)
|
2400
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2401
|
-
printf ("\n");
|
2402
|
-
|
2403
|
-
p = stringprep_locale_to_utf8 (buf);
|
2404
|
-
if (p)
|
2405
|
-
{
|
2406
|
-
strcpy (buf, p);
|
2407
|
-
free (p);
|
2408
|
-
}
|
2409
|
-
else
|
2410
|
-
printf ("Could not convert string to UTF-8, continuing anyway...\n");
|
2411
|
-
|
2412
|
-
printf ("Before stringprep (length %ld): ", (long int) strlen (buf));
|
2413
|
-
for (i = 0; i < strlen (buf); i++)
|
2414
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2415
|
-
printf ("\n");
|
2416
|
-
|
2417
|
-
rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
|
2418
|
-
if (rc != STRINGPREP_OK)
|
2419
|
-
printf ("Stringprep failed (%d): %s\n", rc, stringprep_strerror (rc));
|
2420
|
-
else
|
2421
|
-
{
|
2422
|
-
printf ("After stringprep (length %ld): ", (long int) strlen (buf));
|
2423
|
-
for (i = 0; i < strlen (buf); i++)
|
2424
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2425
|
-
printf ("\n");
|
2426
|
-
}
|
2427
|
-
|
2428
|
-
return 0;
|
2429
|
-
}
|
2430
|
-
|
2431
|
-
|
2432
|
-
File: libidn.info, Node: Example 2, Next: Example 3, Prev: Example 1, Up: Examples
|
2433
|
-
|
2434
|
-
9.2 Example 2
|
2435
|
-
=============
|
2436
|
-
|
2437
|
-
This example demonstrates how the punycode functions are used.
|
2438
|
-
|
2439
|
-
/* example2.c --- Example code showing how to use punycode.
|
2440
|
-
* Copyright (C) 2002-2016 Simon Josefsson
|
2441
|
-
* Copyright (C) 2002 Adam M. Costello
|
2442
|
-
*
|
2443
|
-
* This file is part of GNU Libidn.
|
2444
|
-
*
|
2445
|
-
* This program is free software: you can redistribute it and/or modify
|
2446
|
-
* it under the terms of the GNU General Public License as published by
|
2447
|
-
* the Free Software Foundation, either version 3 of the License, or
|
2448
|
-
* (at your option) any later version.
|
2449
|
-
*
|
2450
|
-
* This program is distributed in the hope that it will be useful,
|
2451
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2452
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2453
|
-
* GNU General Public License for more details.
|
2454
|
-
*
|
2455
|
-
* You should have received a copy of the GNU General Public License
|
2456
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2457
|
-
*
|
2458
|
-
*/
|
2459
|
-
|
2460
|
-
#include <locale.h> /* setlocale() */
|
2461
|
-
|
2462
|
-
/*
|
2463
|
-
* This file is derived from RFC 3492 written by Adam M. Costello.
|
2464
|
-
*
|
2465
|
-
* Disclaimer and license: Regarding this entire document or any
|
2466
|
-
* portion of it (including the pseudocode and C code), the author
|
2467
|
-
* makes no guarantees and is not responsible for any damage resulting
|
2468
|
-
* from its use. The author grants irrevocable permission to anyone
|
2469
|
-
* to use, modify, and distribute it in any way that does not diminish
|
2470
|
-
* the rights of anyone else to use, modify, and distribute it,
|
2471
|
-
* provided that redistributed derivative works do not contain
|
2472
|
-
* misleading author or version information. Derivative works need
|
2473
|
-
* not be licensed under similar terms.
|
2474
|
-
*
|
2475
|
-
*/
|
2476
|
-
|
2477
|
-
#include <assert.h>
|
2478
|
-
#include <stdio.h>
|
2479
|
-
#include <stdlib.h>
|
2480
|
-
#include <string.h>
|
2481
|
-
|
2482
|
-
#include <punycode.h>
|
2483
|
-
|
2484
|
-
/* For testing, we'll just set some compile-time limits rather than */
|
2485
|
-
/* use malloc(), and set a compile-time option rather than using a */
|
2486
|
-
/* command-line option. */
|
2487
|
-
|
2488
|
-
enum
|
2489
|
-
{
|
2490
|
-
unicode_max_length = 256,
|
2491
|
-
ace_max_length = 256
|
2492
|
-
};
|
2493
|
-
|
2494
|
-
static void
|
2495
|
-
usage (char **argv)
|
2496
|
-
{
|
2497
|
-
fprintf (stderr,
|
2498
|
-
"\n"
|
2499
|
-
"%s -e reads code points and writes a Punycode string.\n"
|
2500
|
-
"%s -d reads a Punycode string and writes code points.\n"
|
2501
|
-
"\n"
|
2502
|
-
"Input and output are plain text in the native character set.\n"
|
2503
|
-
"Code points are in the form u+hex separated by whitespace.\n"
|
2504
|
-
"Although the specification allows Punycode strings to contain\n"
|
2505
|
-
"any characters from the ASCII repertoire, this test code\n"
|
2506
|
-
"supports only the printable characters, and needs the Punycode\n"
|
2507
|
-
"string to be followed by a newline.\n"
|
2508
|
-
"The case of the u in u+hex is the force-to-uppercase flag.\n",
|
2509
|
-
argv[0], argv[0]);
|
2510
|
-
exit (EXIT_FAILURE);
|
2511
|
-
}
|
2512
|
-
|
2513
|
-
static void
|
2514
|
-
fail (const char *msg)
|
2515
|
-
{
|
2516
|
-
fputs (msg, stderr);
|
2517
|
-
exit (EXIT_FAILURE);
|
2518
|
-
}
|
2519
|
-
|
2520
|
-
static const char too_big[] =
|
2521
|
-
"input or output is too large, recompile with larger limits\n";
|
2522
|
-
static const char invalid_input[] = "invalid input\n";
|
2523
|
-
static const char overflow[] = "arithmetic overflow\n";
|
2524
|
-
static const char io_error[] = "I/O error\n";
|
2525
|
-
|
2526
|
-
/* The following string is used to convert printable */
|
2527
|
-
/* characters between ASCII and the native charset: */
|
2528
|
-
|
2529
|
-
static const char print_ascii[] = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" " !\"#$%&'()*+,-./" "0123456789:;<=>?" "\0x40" /* at sign */
|
2530
|
-
"ABCDEFGHIJKLMNO"
|
2531
|
-
"PQRSTUVWXYZ[\\]^_" "`abcdefghijklmno" "pqrstuvwxyz{|}~\n";
|
2532
|
-
|
2533
|
-
int
|
2534
|
-
main (int argc, char **argv)
|
2535
|
-
{
|
2536
|
-
enum punycode_status status;
|
2537
|
-
int r;
|
2538
|
-
size_t input_length, output_length, j;
|
2539
|
-
unsigned char case_flags[unicode_max_length];
|
2540
|
-
|
2541
|
-
setlocale (LC_ALL, "");
|
2542
|
-
|
2543
|
-
if (argc != 2)
|
2544
|
-
usage (argv);
|
2545
|
-
if (argv[1][0] != '-')
|
2546
|
-
usage (argv);
|
2547
|
-
if (argv[1][2] != 0)
|
2548
|
-
usage (argv);
|
2549
|
-
|
2550
|
-
if (argv[1][1] == 'e')
|
2551
|
-
{
|
2552
|
-
uint32_t input[unicode_max_length];
|
2553
|
-
unsigned long codept;
|
2554
|
-
char output[ace_max_length + 1], uplus[3];
|
2555
|
-
int c;
|
2556
|
-
|
2557
|
-
/* Read the input code points: */
|
2558
|
-
|
2559
|
-
input_length = 0;
|
2560
|
-
|
2561
|
-
for (;;)
|
2562
|
-
{
|
2563
|
-
r = scanf ("%2s%lx", uplus, &codept);
|
2564
|
-
if (ferror (stdin))
|
2565
|
-
fail (io_error);
|
2566
|
-
if (r == EOF || r == 0)
|
2567
|
-
break;
|
2568
|
-
|
2569
|
-
if (r != 2 || uplus[1] != '+' || codept > (uint32_t) - 1)
|
2570
|
-
{
|
2571
|
-
fail (invalid_input);
|
2572
|
-
}
|
2573
|
-
|
2574
|
-
if (input_length == unicode_max_length)
|
2575
|
-
fail (too_big);
|
2576
|
-
|
2577
|
-
if (uplus[0] == 'u')
|
2578
|
-
case_flags[input_length] = 0;
|
2579
|
-
else if (uplus[0] == 'U')
|
2580
|
-
case_flags[input_length] = 1;
|
2581
|
-
else
|
2582
|
-
fail (invalid_input);
|
2583
|
-
|
2584
|
-
input[input_length++] = codept;
|
2585
|
-
}
|
2586
|
-
|
2587
|
-
/* Encode: */
|
2588
|
-
|
2589
|
-
output_length = ace_max_length;
|
2590
|
-
status = punycode_encode (input_length, input, case_flags,
|
2591
|
-
&output_length, output);
|
2592
|
-
if (status == punycode_bad_input)
|
2593
|
-
fail (invalid_input);
|
2594
|
-
if (status == punycode_big_output)
|
2595
|
-
fail (too_big);
|
2596
|
-
if (status == punycode_overflow)
|
2597
|
-
fail (overflow);
|
2598
|
-
assert (status == punycode_success);
|
2599
|
-
|
2600
|
-
/* Convert to native charset and output: */
|
2601
|
-
|
2602
|
-
for (j = 0; j < output_length; ++j)
|
2603
|
-
{
|
2604
|
-
c = output[j];
|
2605
|
-
assert (c >= 0 && c <= 127);
|
2606
|
-
if (print_ascii[c] == 0)
|
2607
|
-
fail (invalid_input);
|
2608
|
-
output[j] = print_ascii[c];
|
2609
|
-
}
|
2610
|
-
|
2611
|
-
output[j] = 0;
|
2612
|
-
r = puts (output);
|
2613
|
-
if (r == EOF)
|
2614
|
-
fail (io_error);
|
2615
|
-
return EXIT_SUCCESS;
|
2616
|
-
}
|
2617
|
-
|
2618
|
-
if (argv[1][1] == 'd')
|
2619
|
-
{
|
2620
|
-
char input[ace_max_length + 2], *p, *pp;
|
2621
|
-
uint32_t output[unicode_max_length];
|
2622
|
-
|
2623
|
-
/* Read the Punycode input string and convert to ASCII: */
|
2624
|
-
|
2625
|
-
if (!fgets (input, ace_max_length + 2, stdin))
|
2626
|
-
fail (io_error);
|
2627
|
-
if (ferror (stdin))
|
2628
|
-
fail (io_error);
|
2629
|
-
if (feof (stdin))
|
2630
|
-
fail (invalid_input);
|
2631
|
-
input_length = strlen (input) - 1;
|
2632
|
-
if (input[input_length] != '\n')
|
2633
|
-
fail (too_big);
|
2634
|
-
input[input_length] = 0;
|
2635
|
-
|
2636
|
-
for (p = input; *p != 0; ++p)
|
2637
|
-
{
|
2638
|
-
pp = strchr (print_ascii, *p);
|
2639
|
-
if (pp == 0)
|
2640
|
-
fail (invalid_input);
|
2641
|
-
*p = pp - print_ascii;
|
2642
|
-
}
|
2643
|
-
|
2644
|
-
/* Decode: */
|
2645
|
-
|
2646
|
-
output_length = unicode_max_length;
|
2647
|
-
status = punycode_decode (input_length, input, &output_length,
|
2648
|
-
output, case_flags);
|
2649
|
-
if (status == punycode_bad_input)
|
2650
|
-
fail (invalid_input);
|
2651
|
-
if (status == punycode_big_output)
|
2652
|
-
fail (too_big);
|
2653
|
-
if (status == punycode_overflow)
|
2654
|
-
fail (overflow);
|
2655
|
-
assert (status == punycode_success);
|
2656
|
-
|
2657
|
-
/* Output the result: */
|
2658
|
-
|
2659
|
-
for (j = 0; j < output_length; ++j)
|
2660
|
-
{
|
2661
|
-
r = printf ("%s+%04lX\n",
|
2662
|
-
case_flags[j] ? "U" : "u", (unsigned long) output[j]);
|
2663
|
-
if (r < 0)
|
2664
|
-
fail (io_error);
|
2665
|
-
}
|
2666
|
-
|
2667
|
-
return EXIT_SUCCESS;
|
2668
|
-
}
|
2669
|
-
|
2670
|
-
usage (argv);
|
2671
|
-
return EXIT_SUCCESS; /* not reached, but quiets compiler warning */
|
2672
|
-
}
|
2673
|
-
|
2674
|
-
|
2675
|
-
File: libidn.info, Node: Example 3, Next: Example 4, Prev: Example 2, Up: Examples
|
2676
|
-
|
2677
|
-
9.3 Example 3
|
2678
|
-
=============
|
2679
|
-
|
2680
|
-
This example demonstrates how the library is used to convert
|
2681
|
-
internationalized domain names into ASCII compatible names.
|
2682
|
-
|
2683
|
-
/* example3.c --- Example ToASCII() code showing how to use Libidn.
|
2684
|
-
* Copyright (C) 2002-2016 Simon Josefsson
|
2685
|
-
*
|
2686
|
-
* This file is part of GNU Libidn.
|
2687
|
-
*
|
2688
|
-
* This program is free software: you can redistribute it and/or modify
|
2689
|
-
* it under the terms of the GNU General Public License as published by
|
2690
|
-
* the Free Software Foundation, either version 3 of the License, or
|
2691
|
-
* (at your option) any later version.
|
2692
|
-
*
|
2693
|
-
* This program is distributed in the hope that it will be useful,
|
2694
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2695
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2696
|
-
* GNU General Public License for more details.
|
2697
|
-
*
|
2698
|
-
* You should have received a copy of the GNU General Public License
|
2699
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2700
|
-
*
|
2701
|
-
*/
|
2702
|
-
|
2703
|
-
#include <stdio.h>
|
2704
|
-
#include <stdlib.h>
|
2705
|
-
#include <string.h>
|
2706
|
-
#include <locale.h> /* setlocale() */
|
2707
|
-
#include <stringprep.h> /* stringprep_locale_charset() */
|
2708
|
-
#include <idna.h> /* idna_to_ascii_lz() */
|
2709
|
-
|
2710
|
-
/*
|
2711
|
-
* Compiling using libtool and pkg-config is recommended:
|
2712
|
-
*
|
2713
|
-
* $ libtool cc -o example3 example3.c `pkg-config --cflags --libs libidn`
|
2714
|
-
* $ ./example3
|
2715
|
-
* Input domain encoded as `ISO-8859-1': www.räksmörgåsª.example
|
2716
|
-
* Read string (length 23): 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 aa 2e 65 78 61 6d 70 6c 65
|
2717
|
-
* ACE label (length 33): 'www.xn--rksmrgsa-0zap8p.example'
|
2718
|
-
* 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
|
2719
|
-
* $
|
2720
|
-
*
|
2721
|
-
*/
|
2722
|
-
|
2723
|
-
int
|
2724
|
-
main (void)
|
2725
|
-
{
|
2726
|
-
char buf[BUFSIZ];
|
2727
|
-
char *p;
|
2728
|
-
int rc;
|
2729
|
-
size_t i;
|
2730
|
-
|
2731
|
-
setlocale (LC_ALL, "");
|
2732
|
-
|
2733
|
-
printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
|
2734
|
-
fflush (stdout);
|
2735
|
-
if (!fgets (buf, BUFSIZ, stdin))
|
2736
|
-
perror ("fgets");
|
2737
|
-
buf[strlen (buf) - 1] = '\0';
|
2738
|
-
|
2739
|
-
printf ("Read string (length %ld): ", (long int) strlen (buf));
|
2740
|
-
for (i = 0; i < strlen (buf); i++)
|
2741
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2742
|
-
printf ("\n");
|
2743
|
-
|
2744
|
-
rc = idna_to_ascii_lz (buf, &p, 0);
|
2745
|
-
if (rc != IDNA_SUCCESS)
|
2746
|
-
{
|
2747
|
-
printf ("ToASCII() failed (%d): %s\n", rc, idna_strerror (rc));
|
2748
|
-
return EXIT_FAILURE;
|
2749
|
-
}
|
2750
|
-
|
2751
|
-
printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
|
2752
|
-
for (i = 0; i < strlen (p); i++)
|
2753
|
-
printf ("%02x ", p[i] & 0xFF);
|
2754
|
-
printf ("\n");
|
2755
|
-
|
2756
|
-
free (p);
|
2757
|
-
|
2758
|
-
return 0;
|
2759
|
-
}
|
2760
|
-
|
2761
|
-
|
2762
|
-
File: libidn.info, Node: Example 4, Next: Example 5, Prev: Example 3, Up: Examples
|
2763
|
-
|
2764
|
-
9.4 Example 4
|
2765
|
-
=============
|
2766
|
-
|
2767
|
-
This example demonstrates how the library is used to convert ASCII
|
2768
|
-
compatible names to internationalized domain names.
|
2769
|
-
|
2770
|
-
/* example4.c --- Example ToUnicode() code showing how to use Libidn.
|
2771
|
-
* Copyright (C) 2002-2016 Simon Josefsson
|
2772
|
-
*
|
2773
|
-
* This file is part of GNU Libidn.
|
2774
|
-
*
|
2775
|
-
* This program is free software: you can redistribute it and/or modify
|
2776
|
-
* it under the terms of the GNU General Public License as published by
|
2777
|
-
* the Free Software Foundation, either version 3 of the License, or
|
2778
|
-
* (at your option) any later version.
|
2779
|
-
*
|
2780
|
-
* This program is distributed in the hope that it will be useful,
|
2781
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2782
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2783
|
-
* GNU General Public License for more details.
|
2784
|
-
*
|
2785
|
-
* You should have received a copy of the GNU General Public License
|
2786
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2787
|
-
*
|
2788
|
-
*/
|
2789
|
-
|
2790
|
-
#include <stdio.h>
|
2791
|
-
#include <stdlib.h>
|
2792
|
-
#include <string.h>
|
2793
|
-
#include <locale.h> /* setlocale() */
|
2794
|
-
#include <stringprep.h> /* stringprep_locale_charset() */
|
2795
|
-
#include <idna.h> /* idna_to_unicode_lzlz() */
|
2796
|
-
|
2797
|
-
/*
|
2798
|
-
* Compiling using libtool and pkg-config is recommended:
|
2799
|
-
*
|
2800
|
-
* $ libtool cc -o example4 example4.c `pkg-config --cflags --libs libidn`
|
2801
|
-
* $ ./example4
|
2802
|
-
* Input domain encoded as `ISO-8859-1': www.xn--rksmrgsa-0zap8p.example
|
2803
|
-
* Read string (length 33): 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
|
2804
|
-
* ACE label (length 23): 'www.räksmörgåsa.example'
|
2805
|
-
* 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 61 2e 65 78 61 6d 70 6c 65
|
2806
|
-
* $
|
2807
|
-
*
|
2808
|
-
*/
|
2809
|
-
|
2810
|
-
int
|
2811
|
-
main (void)
|
2812
|
-
{
|
2813
|
-
char buf[BUFSIZ];
|
2814
|
-
char *p;
|
2815
|
-
int rc;
|
2816
|
-
size_t i;
|
2817
|
-
|
2818
|
-
setlocale (LC_ALL, "");
|
2819
|
-
|
2820
|
-
printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
|
2821
|
-
fflush (stdout);
|
2822
|
-
if (!fgets (buf, BUFSIZ, stdin))
|
2823
|
-
perror ("fgets");
|
2824
|
-
buf[strlen (buf) - 1] = '\0';
|
2825
|
-
|
2826
|
-
printf ("Read string (length %ld): ", (long int) strlen (buf));
|
2827
|
-
for (i = 0; i < strlen (buf); i++)
|
2828
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2829
|
-
printf ("\n");
|
2830
|
-
|
2831
|
-
rc = idna_to_unicode_lzlz (buf, &p, 0);
|
2832
|
-
if (rc != IDNA_SUCCESS)
|
2833
|
-
{
|
2834
|
-
printf ("ToUnicode() failed (%d): %s\n", rc, idna_strerror (rc));
|
2835
|
-
return EXIT_FAILURE;
|
2836
|
-
}
|
2837
|
-
|
2838
|
-
printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
|
2839
|
-
for (i = 0; i < strlen (p); i++)
|
2840
|
-
printf ("%02x ", p[i] & 0xFF);
|
2841
|
-
printf ("\n");
|
2842
|
-
|
2843
|
-
free (p);
|
2844
|
-
|
2845
|
-
return 0;
|
2846
|
-
}
|
2847
|
-
|
2848
|
-
|
2849
|
-
File: libidn.info, Node: Example 5, Prev: Example 4, Up: Examples
|
2850
|
-
|
2851
|
-
9.5 Example 5
|
2852
|
-
=============
|
2853
|
-
|
2854
|
-
This example demonstrates how the library is used to check a string for
|
2855
|
-
invalid characters within a specific TLD.
|
2856
|
-
|
2857
|
-
/* example5.c --- Example TLD checking.
|
2858
|
-
* Copyright (C) 2004-2016 Simon Josefsson
|
2859
|
-
*
|
2860
|
-
* This file is part of GNU Libidn.
|
2861
|
-
*
|
2862
|
-
* This program is free software: you can redistribute it and/or modify
|
2863
|
-
* it under the terms of the GNU General Public License as published by
|
2864
|
-
* the Free Software Foundation, either version 3 of the License, or
|
2865
|
-
* (at your option) any later version.
|
2866
|
-
*
|
2867
|
-
* This program is distributed in the hope that it will be useful,
|
2868
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2869
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2870
|
-
* GNU General Public License for more details.
|
2871
|
-
*
|
2872
|
-
* You should have received a copy of the GNU General Public License
|
2873
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2874
|
-
*
|
2875
|
-
*/
|
2876
|
-
|
2877
|
-
#include <stdio.h>
|
2878
|
-
#include <stdlib.h>
|
2879
|
-
#include <string.h>
|
2880
|
-
|
2881
|
-
/* Get stringprep_locale_charset, etc. */
|
2882
|
-
#include <stringprep.h>
|
2883
|
-
|
2884
|
-
/* Get idna_to_ascii_8z, etc. */
|
2885
|
-
#include <idna.h>
|
2886
|
-
|
2887
|
-
/* Get tld_check_4z. */
|
2888
|
-
#include <tld.h>
|
2889
|
-
|
2890
|
-
/*
|
2891
|
-
* Compiling using libtool and pkg-config is recommended:
|
2892
|
-
*
|
2893
|
-
* $ libtool cc -o example5 example5.c `pkg-config --cflags --libs libidn`
|
2894
|
-
* $ ./example5
|
2895
|
-
* Input domain encoded as `UTF-8': fooß.no
|
2896
|
-
* Read string (length 8): 66 6f 6f c3 9f 2e 6e 6f
|
2897
|
-
* ToASCII string (length 8): fooss.no
|
2898
|
-
* ToUnicode string: U+0066 U+006f U+006f U+0073 U+0073 U+002e U+006e U+006f
|
2899
|
-
* Domain accepted by TLD check
|
2900
|
-
*
|
2901
|
-
* $ ./example5
|
2902
|
-
* Input domain encoded as `UTF-8': gr€€n.no
|
2903
|
-
* Read string (length 12): 67 72 e2 82 ac e2 82 ac 6e 2e 6e 6f
|
2904
|
-
* ToASCII string (length 16): xn--grn-l50aa.no
|
2905
|
-
* ToUnicode string: U+0067 U+0072 U+20ac U+20ac U+006e U+002e U+006e U+006f
|
2906
|
-
* Domain rejected by TLD check, Unicode position 2
|
2907
|
-
*
|
2908
|
-
*/
|
2909
|
-
|
2910
|
-
int
|
2911
|
-
main (void)
|
2912
|
-
{
|
2913
|
-
char buf[BUFSIZ];
|
2914
|
-
char *p;
|
2915
|
-
uint32_t *r;
|
2916
|
-
int rc;
|
2917
|
-
size_t errpos, i;
|
2918
|
-
|
2919
|
-
printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
|
2920
|
-
fflush (stdout);
|
2921
|
-
if (!fgets (buf, BUFSIZ, stdin))
|
2922
|
-
perror ("fgets");
|
2923
|
-
buf[strlen (buf) - 1] = '\0';
|
2924
|
-
|
2925
|
-
printf ("Read string (length %ld): ", (long int) strlen (buf));
|
2926
|
-
for (i = 0; i < strlen (buf); i++)
|
2927
|
-
printf ("%02x ", buf[i] & 0xFF);
|
2928
|
-
printf ("\n");
|
2929
|
-
|
2930
|
-
p = stringprep_locale_to_utf8 (buf);
|
2931
|
-
if (p)
|
2932
|
-
{
|
2933
|
-
strcpy (buf, p);
|
2934
|
-
free (p);
|
2935
|
-
}
|
2936
|
-
else
|
2937
|
-
printf ("Could not convert string to UTF-8, continuing anyway...\n");
|
2938
|
-
|
2939
|
-
rc = idna_to_ascii_8z (buf, &p, 0);
|
2940
|
-
if (rc != IDNA_SUCCESS)
|
2941
|
-
{
|
2942
|
-
printf ("idna_to_ascii_8z failed (%d): %s\n", rc, idna_strerror (rc));
|
2943
|
-
return 2;
|
2944
|
-
}
|
2945
|
-
|
2946
|
-
printf ("ToASCII string (length %ld): %s\n", (long int) strlen (p), p);
|
2947
|
-
|
2948
|
-
rc = idna_to_unicode_8z4z (p, &r, 0);
|
2949
|
-
free (p);
|
2950
|
-
if (rc != IDNA_SUCCESS)
|
2951
|
-
{
|
2952
|
-
printf ("idna_to_unicode_8z4z failed (%d): %s\n",
|
2953
|
-
rc, idna_strerror (rc));
|
2954
|
-
return 2;
|
2955
|
-
}
|
2956
|
-
|
2957
|
-
printf ("ToUnicode string: ");
|
2958
|
-
for (i = 0; r[i]; i++)
|
2959
|
-
printf ("U+%04x ", r[i]);
|
2960
|
-
printf ("\n");
|
2961
|
-
|
2962
|
-
rc = tld_check_4z (r, &errpos, NULL);
|
2963
|
-
free (r);
|
2964
|
-
if (rc == TLD_INVALID)
|
2965
|
-
{
|
2966
|
-
printf ("Domain rejected by TLD check, Unicode position %ld\n", (long int) errpos);
|
2967
|
-
return 1;
|
2968
|
-
}
|
2969
|
-
else if (rc != TLD_SUCCESS)
|
2970
|
-
{
|
2971
|
-
printf ("tld_check_4z() failed (%d): %s\n", rc, tld_strerror (rc));
|
2972
|
-
return 2;
|
2973
|
-
}
|
2974
|
-
|
2975
|
-
printf ("Domain accepted by TLD check\n");
|
2976
|
-
|
2977
|
-
return 0;
|
2978
|
-
}
|
2979
|
-
|
2980
|
-
|
2981
|
-
File: libidn.info, Node: Invoking idn, Next: Emacs API, Prev: Examples, Up: Top
|
2982
|
-
|
2983
|
-
10 Invoking idn
|
2984
|
-
***************
|
2985
|
-
|
2986
|
-
10.1 Name
|
2987
|
-
=========
|
2988
|
-
|
2989
|
-
GNU Libidn (idn) – Internationalized Domain Names command line tool
|
2990
|
-
|
2991
|
-
10.2 Description
|
2992
|
-
================
|
2993
|
-
|
2994
|
-
‘idn’ allows internationalized string preparation (‘stringprep’),
|
2995
|
-
encoding and decoding of punycode data, and IDNA ToASCII/ToUnicode
|
2996
|
-
operations to be performed on the command line.
|
2997
|
-
|
2998
|
-
If strings are specified on the command line, they are used as input
|
2999
|
-
and the computed output is printed to standard output ‘stdout’. If no
|
3000
|
-
strings are specified on the command line, the program read data, line
|
3001
|
-
by line, from the standard input ‘stdin’, and print the computed output
|
3002
|
-
to standard output. What processing is performed (e.g., ToASCII, or
|
3003
|
-
Punycode encode) is indicated by options. If any errors are
|
3004
|
-
encountered, the execution of the applications is aborted.
|
3005
|
-
|
3006
|
-
All strings are expected to be encoded in the preferred charset used
|
3007
|
-
by your locale. Use ‘--debug’ to find out what this charset is. You
|
3008
|
-
can override the charset used by setting environment variable ‘CHARSET’.
|
3009
|
-
|
3010
|
-
To process a string that starts with ‘-’, for example ‘-foo’, use
|
3011
|
-
‘--’ to signal the end of parameters, as in ‘idn --quiet -a -- -foo’.
|
3012
|
-
|
3013
|
-
10.3 Options
|
3014
|
-
============
|
3015
|
-
|
3016
|
-
‘idn’ recognizes these commands:
|
3017
|
-
|
3018
|
-
-h, --help Print help and exit
|
3019
|
-
|
3020
|
-
-V, --version Print version and exit
|
3021
|
-
|
3022
|
-
-s, --stringprep Prepare string according to nameprep profile
|
3023
|
-
|
3024
|
-
-d, --punycode-decode Decode Punycode
|
3025
|
-
|
3026
|
-
-e, --punycode-encode Encode Punycode
|
3027
|
-
|
3028
|
-
-a, --idna-to-ascii Convert to ACE according to IDNA (default mode)
|
3029
|
-
|
3030
|
-
-u, --idna-to-unicode Convert from ACE according to IDNA
|
3031
|
-
|
3032
|
-
--allow-unassigned Toggle IDNA AllowUnassigned flag (default off)
|
3033
|
-
|
3034
|
-
--usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default off)
|
3035
|
-
|
3036
|
-
--no-tld Don't check string for TLD specific rules
|
3037
|
-
Only for --idna-to-ascii and --idna-to-unicode
|
3038
|
-
|
3039
|
-
-n, --nfkc Normalize string according to Unicode v3.2 NFKC
|
3040
|
-
|
3041
|
-
-p, --profile=STRING Use specified stringprep profile instead
|
3042
|
-
Valid stringprep profiles: `Nameprep',
|
3043
|
-
`iSCSI', `Nodeprep', `Resourceprep',
|
3044
|
-
`trace', `SASLprep'
|
3045
|
-
|
3046
|
-
--debug Print debugging information
|
3047
|
-
|
3048
|
-
--quiet Silent operation
|
3049
|
-
|
3050
|
-
10.4 Environment Variables
|
3051
|
-
==========================
|
3052
|
-
|
3053
|
-
The CHARSET environment variable can be used to override what character
|
3054
|
-
set to be used for decoding incoming data (i.e., on the command line or
|
3055
|
-
on the standard input stream), and to encode data to the standard
|
3056
|
-
output. If your system is set up correctly, however, the application
|
3057
|
-
will guess which character set is used automatically. Example usage:
|
3058
|
-
|
3059
|
-
$ CHARSET=ISO-8859-1 idn --punycode-encode
|
3060
|
-
...
|
3061
|
-
|
3062
|
-
10.5 Examples
|
3063
|
-
=============
|
3064
|
-
|
3065
|
-
Standard usage, reading input from standard input:
|
3066
|
-
|
3067
|
-
jas@latte:~$ idn
|
3068
|
-
libidn 0.3.5
|
3069
|
-
Copyright 2002, 2003 Simon Josefsson.
|
3070
|
-
GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
|
3071
|
-
You may redistribute copies of GNU Libidn under the terms of
|
3072
|
-
the GNU Lesser General Public License. For more information
|
3073
|
-
about these matters, see the file named COPYING.LIB.
|
3074
|
-
Type each input string on a line by itself, terminated by a newline character.
|
3075
|
-
räksmörgås.se
|
3076
|
-
xn--rksmrgs-5wao1o.se
|
3077
|
-
jas@latte:~$
|
3078
|
-
|
3079
|
-
Reading input from command line, and disable printing copyright and
|
3080
|
-
license information:
|
3081
|
-
|
3082
|
-
jas@latte:~$ idn --quiet räksmörgås.se blåbærgrød.no
|
3083
|
-
xn--rksmrgs-5wao1o.se
|
3084
|
-
xn--blbrgrd-fxak7p.no
|
3085
|
-
jas@latte:~$
|
3086
|
-
|
3087
|
-
Accessing a specific StringPrep profile directly:
|
3088
|
-
|
3089
|
-
jas@latte:~$ idn --quiet --profile=SASLprep --stringprep teßtª
|
3090
|
-
teßta
|
3091
|
-
jas@latte:~$
|
3092
|
-
|
3093
|
-
10.6 Troubleshooting
|
3094
|
-
====================
|
3095
|
-
|
3096
|
-
Getting character data encoded right, and making sure Libidn use the
|
3097
|
-
same encoding, can be difficult. The reason for this is that most
|
3098
|
-
systems encode character data in more than one character encoding, i.e.,
|
3099
|
-
using ‘UTF-8’ together with ‘ISO-8859-1’ or ‘ISO-2022-JP’. This problem
|
3100
|
-
is likely to continue to exist until only one character encoding come
|
3101
|
-
out as the evolutionary winner, or (more likely, at least to some
|
3102
|
-
extents) forever.
|
3103
|
-
|
3104
|
-
The first step to troubleshooting character encoding problems with
|
3105
|
-
Libidn is to use the ‘--debug’ parameter to find out which character set
|
3106
|
-
encoding ‘idn’ believe your locale uses.
|
3107
|
-
|
3108
|
-
jas@latte:~$ idn --debug --quiet ""
|
3109
|
-
system locale uses charset `UTF-8'.
|
3110
|
-
|
3111
|
-
jas@latte:~$
|
3112
|
-
|
3113
|
-
If it prints ‘ANSI_X3.4-1968’ (i.e., ‘US-ASCII’), this indicate you
|
3114
|
-
have not configured your locale properly. To configure the locale, you
|
3115
|
-
can, for example, use ‘LANG=sv_SE.UTF-8; export LANG’ at a ‘/bin/sh’
|
3116
|
-
prompt, to set up your locale for a Swedish environment using ‘UTF-8’ as
|
3117
|
-
the encoding.
|
3118
|
-
|
3119
|
-
Sometimes ‘idn’ appear to be unable to translate from your system
|
3120
|
-
locale into ‘UTF-8’ (which is used internally), and you get an error
|
3121
|
-
like the following:
|
3122
|
-
|
3123
|
-
jas@latte:~$ idn --quiet foo
|
3124
|
-
idn: could not convert from ISO-8859-1 to UTF-8.
|
3125
|
-
jas@latte:~$
|
3126
|
-
|
3127
|
-
The simplest explanation is that you haven’t installed the ‘iconv’
|
3128
|
-
conversion tools. You can find it as a standalone library in GNU
|
3129
|
-
Libiconv (<http://www.gnu.org/software/libiconv/>). On many GNU/Linux
|
3130
|
-
systems, this library is part of the system, but you may have to install
|
3131
|
-
additional packages (e.g., ‘glibc-locale’ for Debian) to be able to use
|
3132
|
-
it.
|
3133
|
-
|
3134
|
-
Another explanation is that the error is correct and you are feeding
|
3135
|
-
‘idn’ invalid data. This can happen inadvertently if you are not
|
3136
|
-
careful with the character set encoding you use. For example, if your
|
3137
|
-
shell run in a ‘ISO-8859-1’ environment, and you invoke ‘idn’ with the
|
3138
|
-
‘CHARSET’ environment variable as follows, you will feed it ‘ISO-8859-1’
|
3139
|
-
characters but force it to believe they are ‘UTF-8’. Naturally this
|
3140
|
-
will lead to an error, unless the byte sequences happen to be valid
|
3141
|
-
‘UTF-8’. Note that even if you don’t get an error, the output may be
|
3142
|
-
incorrect in this situation, because ‘ISO-8859-1’ and ‘UTF-8’ does not
|
3143
|
-
in general encode the same characters as the same byte sequences.
|
3144
|
-
|
3145
|
-
jas@latte:~$ idn --quiet --debug ""
|
3146
|
-
system locale uses charset `ISO-8859-1'.
|
3147
|
-
|
3148
|
-
jas@latte:~$ CHARSET=UTF-8 idn --quiet --debug räksmörgås
|
3149
|
-
system locale uses charset `UTF-8'.
|
3150
|
-
input[0] = U+0072
|
3151
|
-
input[1] = U+4af3
|
3152
|
-
input[2] = U+006d
|
3153
|
-
input[3] = U+1b29e5
|
3154
|
-
input[4] = U+0073
|
3155
|
-
output[0] = U+0078
|
3156
|
-
output[1] = U+006e
|
3157
|
-
output[2] = U+002d
|
3158
|
-
output[3] = U+002d
|
3159
|
-
output[4] = U+0072
|
3160
|
-
output[5] = U+006d
|
3161
|
-
output[6] = U+0073
|
3162
|
-
output[7] = U+002d
|
3163
|
-
output[8] = U+0068
|
3164
|
-
output[9] = U+0069
|
3165
|
-
output[10] = U+0036
|
3166
|
-
output[11] = U+0064
|
3167
|
-
output[12] = U+0035
|
3168
|
-
output[13] = U+0039
|
3169
|
-
output[14] = U+0037
|
3170
|
-
output[15] = U+0035
|
3171
|
-
output[16] = U+0035
|
3172
|
-
output[17] = U+0032
|
3173
|
-
output[18] = U+0061
|
3174
|
-
xn--rms-hi6d597552a
|
3175
|
-
jas@latte:~$
|
3176
|
-
|
3177
|
-
The sense moral here is to forget about ‘CHARSET’ (configure your
|
3178
|
-
locales properly instead) unless you know what you are doing, and if you
|
3179
|
-
want to use it, do it carefully, after verifying with ‘--debug’ that you
|
3180
|
-
get the desired results.
|
3181
|
-
|
3182
|
-
|
3183
|
-
File: libidn.info, Node: Emacs API, Next: Java API, Prev: Invoking idn, Up: Top
|
3184
|
-
|
3185
|
-
11 Emacs API
|
3186
|
-
************
|
3187
|
-
|
3188
|
-
Included in Libidn are ‘punycode.el’ and ‘idna.el’ that provides an
|
3189
|
-
Emacs Lisp API to (a limited set of) the Libidn API. This section
|
3190
|
-
describes the API. Currently the IDNA API always set the
|
3191
|
-
‘UseSTD3ASCIIRules’ flag and clear the ‘AllowUnassigned’ flag, in the
|
3192
|
-
future there may be functionality to specify these flags via the API.
|
3193
|
-
|
3194
|
-
11.1 Punycode Emacs API
|
3195
|
-
=======================
|
3196
|
-
|
3197
|
-
-- Variable: punycode-program
|
3198
|
-
Name of the GNU Libidn ‘idn’ application. The default is ‘idn’.
|
3199
|
-
This variable can be customized.
|
3200
|
-
|
3201
|
-
-- Variable: punycode-environment
|
3202
|
-
List of environment variable definitions prepended to
|
3203
|
-
‘process-environment’. The default is ‘("CHARSET=UTF-8")’. This
|
3204
|
-
variable can be customized.
|
3205
|
-
|
3206
|
-
-- Variable: punycode-encode-parameters
|
3207
|
-
List of parameters passed to PUNYCODE-PROGRAM to invoke punycode
|
3208
|
-
encoding mode. The default is ‘("--quiet" "--punycode-encode")’.
|
3209
|
-
This variable can be customized.
|
3210
|
-
|
3211
|
-
-- Variable: punycode-decode-parameters
|
3212
|
-
Parameters passed to PUNYCODE-PROGRAM to invoke punycode decoding
|
3213
|
-
mode. The default is ‘("--quiet" "--punycode-decode")’. This
|
3214
|
-
variable can be customized.
|
3215
|
-
|
3216
|
-
-- Function: punycode-encode string
|
3217
|
-
Returns a Punycode encoding of the STRING, after converting the
|
3218
|
-
input into UTF-8.
|
3219
|
-
|
3220
|
-
-- Function: punycode-decode string
|
3221
|
-
Returns a possibly multibyte string which is the decoding of the
|
3222
|
-
STRING which is a punycode encoded string.
|
3223
|
-
|
3224
|
-
11.2 IDNA Emacs API
|
3225
|
-
===================
|
3226
|
-
|
3227
|
-
-- Variable: idna-program
|
3228
|
-
Name of the GNU Libidn ‘idn’ application. The default is ‘idn’.
|
3229
|
-
This variable can be customized.
|
3230
|
-
|
3231
|
-
-- Variable: idna-environment
|
3232
|
-
List of environment variable definitions prepended to
|
3233
|
-
‘process-environment’. The default is ‘("CHARSET=UTF-8")’. This
|
3234
|
-
variable can be customized.
|
3235
|
-
|
3236
|
-
-- Variable: idna-to-ascii-parameters
|
3237
|
-
List of parameters passed to IDNA-PROGRAM to invoke IDNA ToASCII
|
3238
|
-
mode. The default is ‘("--quiet" "--idna-to-ascii"
|
3239
|
-
"--usestd3asciirules")’. This variable can be customized.
|
3240
|
-
|
3241
|
-
-- Variable: idna-to-unicode-parameters
|
3242
|
-
Parameters passed IDNA-PROGRAM to invoke IDNA ToUnicode mode. The
|
3243
|
-
default is ‘("--quiet" "--idna-to-unicode" "--usestd3asciirules")’.
|
3244
|
-
This variable can be customized.
|
3245
|
-
|
3246
|
-
-- Function: idna-to-ascii string
|
3247
|
-
Returns an ASCII Compatible Encoding (ACE) of the string computed
|
3248
|
-
by the IDNA ToASCII operation on the input STRING, after converting
|
3249
|
-
the input to UTF-8.
|
3250
|
-
|
3251
|
-
-- Function: idna-to-unicode string
|
3252
|
-
Returns a possibly multibyte string which is the output of the IDNA
|
3253
|
-
ToUnicode operation computed on the input STRING.
|
3254
|
-
|
3255
|
-
|
3256
|
-
File: libidn.info, Node: Java API, Next: C# API, Prev: Emacs API, Up: Top
|
3257
|
-
|
3258
|
-
12 Java API
|
3259
|
-
***********
|
3260
|
-
|
3261
|
-
Libidn has been ported to the Java programming language, and as a
|
3262
|
-
consequence most of the API is available to native Java applications.
|
3263
|
-
This section contain notes on this support, complete documentation is
|
3264
|
-
pending.
|
3265
|
-
|
3266
|
-
The Java library, if Libidn has been built with Java support (*note
|
3267
|
-
Downloading and Installing::), will be placed in ‘java/libidn-1.33.jar’.
|
3268
|
-
The source code is below ‘java/’ in Maven directory layout, and there is
|
3269
|
-
a Maven ‘pom.xml’ build script as well. Source code files are in
|
3270
|
-
‘java/src/main/java/gnu/inet/encoding/’.
|
3271
|
-
|
3272
|
-
12.1 Overview
|
3273
|
-
=============
|
3274
|
-
|
3275
|
-
This package provides a Java implementation of the Internationalized
|
3276
|
-
Domain Names in Applications (IDNA) standard. It is written entirely in
|
3277
|
-
Java and does not require any additional libraries to be set up.
|
3278
|
-
|
3279
|
-
The gnu.inet.encoding.IDNA class offers two public functions, toASCII
|
3280
|
-
and toUnicode which can be used as follows:
|
3281
|
-
|
3282
|
-
gnu.inet.encoding.IDNA.toASCII("blöds.züg");
|
3283
|
-
gnu.inet.encoding.IDNA.toUnicode("xn--blds-6qa.xn--zg-xka");
|
3284
|
-
|
3285
|
-
12.2 Miscellaneous Programs
|
3286
|
-
===========================
|
3287
|
-
|
3288
|
-
The ‘java/src/util/java/’ directory contains several programs that are
|
3289
|
-
related to the Java part of GNU Libidn, but that don’t need to be
|
3290
|
-
included in the main source tree or the JAR file.
|
3291
|
-
|
3292
|
-
12.2.1 GenerateRFC3454
|
3293
|
-
----------------------
|
3294
|
-
|
3295
|
-
This program parses RFC3454 and creates the RFC3454.java program that is
|
3296
|
-
required during the StringPrep phase.
|
3297
|
-
|
3298
|
-
The RFC can be found at various locations, for example at
|
3299
|
-
<http://www.ietf.org/rfc/rfc3454.txt>.
|
3300
|
-
|
3301
|
-
Invoke the program as follows:
|
3302
|
-
|
3303
|
-
$ java GenerateRFC3454
|
3304
|
-
Creating RFC3454.java... Ok.
|
3305
|
-
|
3306
|
-
12.2.2 GenerateNFKC
|
3307
|
-
-------------------
|
3308
|
-
|
3309
|
-
The GenerateNFKC program parses the Unicode character database file and
|
3310
|
-
generates all the tables required for NFKC. This program requires the
|
3311
|
-
two files UnicodeData.txt and CompositionExclusions.txt of version 3.2
|
3312
|
-
of the Unicode files. Note that RFC3454 (Stringprep) defines that
|
3313
|
-
Unicode version 3.2 is to be used, not the latest version.
|
3314
|
-
|
3315
|
-
The Unicode data files can be found at
|
3316
|
-
<http://www.unicode.org/Public/>.
|
3317
|
-
|
3318
|
-
Invoke the program as follows:
|
3319
|
-
|
3320
|
-
$ java GenerateNFKC
|
3321
|
-
Creating CombiningClass.java... Ok.
|
3322
|
-
Creating DecompositionKeys.java... Ok.
|
3323
|
-
Creating DecompositionMappings.java... Ok.
|
3324
|
-
Creating Composition.java... Ok.
|
3325
|
-
|
3326
|
-
12.2.3 TestIDNA
|
3327
|
-
---------------
|
3328
|
-
|
3329
|
-
The TestIDNA program allows to test the IDNA implementation manually or
|
3330
|
-
against Simon Josefsson’s test vectors.
|
3331
|
-
|
3332
|
-
The test vectors can be found at the Libidn homepage,
|
3333
|
-
<http://www.gnu.org/software/libidn/>.
|
3334
|
-
|
3335
|
-
To test the transformation manually, use:
|
3336
|
-
|
3337
|
-
$ java -cp .:/usr/share/java/libidn.jar TestIDNA -a <string to test>
|
3338
|
-
Input: <string to test>
|
3339
|
-
Output: <toASCII(string to test)>
|
3340
|
-
$ java -cp .:/usr/share/java/libidn.jar TestIDNA -u <string to test>
|
3341
|
-
Input: <string to test>
|
3342
|
-
Output: <toUnicode(string to test)>
|
3343
|
-
|
3344
|
-
To test against draft-josefsson-idn-test-vectors.html, use:
|
3345
|
-
|
3346
|
-
$ java -cp .:/usr/share/java/libidn/libidn.jar TestIDNA -t
|
3347
|
-
No errors detected!
|
3348
|
-
|
3349
|
-
12.2.4 TestNFKC
|
3350
|
-
---------------
|
3351
|
-
|
3352
|
-
The TestNFKC program allows to test the NFKC implementation manually or
|
3353
|
-
against the NormalizationTest.txt file from the Unicode data files.
|
3354
|
-
|
3355
|
-
To test the normalization manually, use:
|
3356
|
-
|
3357
|
-
$ java -cp .:/usr/share/java/libidn.jar TestNFKC <string to test>
|
3358
|
-
Input: <string to test>
|
3359
|
-
Output: <nfkc version of the string to test>
|
3360
|
-
|
3361
|
-
To test against NormalizationTest.txt:
|
3362
|
-
|
3363
|
-
$ java -cp .:/usr/share/java/libidn.jar TestNFKC
|
3364
|
-
No errors detected!
|
3365
|
-
|
3366
|
-
12.3 Possible Problems
|
3367
|
-
======================
|
3368
|
-
|
3369
|
-
Beware of Bugs: This Java API needs a lot more testing, especially with
|
3370
|
-
"exotic" character sets. While it works for me, it may not work for
|
3371
|
-
you.
|
3372
|
-
|
3373
|
-
Encoding of your Java sources: If you are using non-ASCII characters
|
3374
|
-
in your Java source code, make sure javac compiles your programs with
|
3375
|
-
the correct encoding. If necessary specify the encoding using the
|
3376
|
-
-encoding parameter.
|
3377
|
-
|
3378
|
-
Java Unicode handling: Java 1.4 only handles 16-bit Unicode code
|
3379
|
-
points (i.e. characters in the Basic Multilingual Plane), this
|
3380
|
-
implementation therefore ignores all references to so-called
|
3381
|
-
Supplementary Characters (U+10000 to U+10FFFF). Starting from Java 1.5,
|
3382
|
-
these characters will also be supported by Java, but this will require
|
3383
|
-
changes to this library. See also the next section.
|
3384
|
-
|
3385
|
-
12.4 A Note on Java and Unicode
|
3386
|
-
===============================
|
3387
|
-
|
3388
|
-
This library uses Java’s built-in ’char’ datatype. Up to Java 1.4, this
|
3389
|
-
datatype only supports 16-bit Unicode code points, also called the Basic
|
3390
|
-
Multilingual Plane. For this reason, this library doesn’t work for
|
3391
|
-
Supplementary Characters (i.e. characters from U+10000 to U+10FFFF).
|
3392
|
-
All references to such characters are silently ignored.
|
3393
|
-
|
3394
|
-
Starting from Java 1.5, also Supplementary Characters will be
|
3395
|
-
supported. However, this will require changes in the present version of
|
3396
|
-
the library. Java 1.5 is currently in beta status.
|
3397
|
-
|
3398
|
-
For more information refer to the documentation of
|
3399
|
-
java.lang.Character in the JDK API.
|
3400
|
-
|
3401
|
-
|
3402
|
-
File: libidn.info, Node: C# API, Next: Acknowledgements, Prev: Java API, Up: Top
|
3403
|
-
|
3404
|
-
13 C# API
|
3405
|
-
*********
|
3406
|
-
|
3407
|
-
The Libidn library has been ported to the C# language. The port reside
|
3408
|
-
in the top-level ‘csharp/’ directory. Currently, no further
|
3409
|
-
documentation about the implementation or the API is available.
|
3410
|
-
However, the C# port was based on the Java port, and the API is exactly
|
3411
|
-
the same as in the Java version. The help files for the Java API may
|
3412
|
-
thus be useful.
|
3413
|
-
|
3414
|
-
|
3415
|
-
File: libidn.info, Node: Acknowledgements, Next: History, Prev: C# API, Up: Top
|
3416
|
-
|
3417
|
-
14 Acknowledgements
|
3418
|
-
*******************
|
3419
|
-
|
3420
|
-
The punycode implementation was taken from the IETF IDN Punycode
|
3421
|
-
specification, by Adam M. Costello. The TLD code was contributed by
|
3422
|
-
Thomas Jacob. The Java implementation was contributed by Oliver Hitz.
|
3423
|
-
The C# implementation was contributed by Alexander Gnauck. The Unicode
|
3424
|
-
tables were provided by Unicode, Inc. Some functions for dealing with
|
3425
|
-
Unicode (see nfkc.c and toutf8.c) were borrowed from GLib, downloaded
|
3426
|
-
from <http://www.gtk.org/>. The manual borrowed text from Libgcrypt by
|
3427
|
-
Werner Koch.
|
3428
|
-
|
3429
|
-
Inspiration for many things that, consciously or not, have gone into
|
3430
|
-
this package is due to a number of free software package that the author
|
3431
|
-
has been exposed to. The author wishes to acknowledge the free software
|
3432
|
-
community in general, for giving an example on what role software
|
3433
|
-
development can play in the modern society.
|
3434
|
-
|
3435
|
-
Several people reported bugs, sent patches or suggested improvements,
|
3436
|
-
see the file THANKS in the top-level directory of the source code.
|
3437
|
-
|
3438
|
-
|
3439
|
-
File: libidn.info, Node: History, Next: PR29 discussion, Prev: Acknowledgements, Up: Top
|
3440
|
-
|
3441
|
-
15 History
|
3442
|
-
**********
|
3443
|
-
|
3444
|
-
The complete history of user visible changes is stored in the file
|
3445
|
-
‘NEWS’ in the top-level directory of the source code tree. The complete
|
3446
|
-
history of modifications to each file is stored in the file ‘ChangeLog’
|
3447
|
-
in the same directory. This section contain a condensed version of that
|
3448
|
-
information, in the form of “milestones” for the project.
|
3449
|
-
|
3450
|
-
Stringprep implementation.
|
3451
|
-
Version 0.0.0 released on 2002-11-05.
|
3452
|
-
|
3453
|
-
IDNA and Punycode implementations, part of the GNU project.
|
3454
|
-
Version 0.1.0 released on 2003-01-05.
|
3455
|
-
|
3456
|
-
Uses official IDNA ACE prefix ‘xn--’.
|
3457
|
-
Version 0.1.7 released on 2003-02-12.
|
3458
|
-
|
3459
|
-
Command line interface.
|
3460
|
-
Version 0.1.11 released on 2003-02-26.
|
3461
|
-
|
3462
|
-
GNU Libc add-on proposed.
|
3463
|
-
Version 0.1.12 released on 2003-03-06.
|
3464
|
-
|
3465
|
-
Interoperability testing during IDNConnect.
|
3466
|
-
Version 0.3.1 released on 2003-10-02.
|
3467
|
-
|
3468
|
-
TLD restriction testing.
|
3469
|
-
Version 0.4.0 released on 2004-02-28.
|
3470
|
-
|
3471
|
-
GNU Libc add-on integrated.
|
3472
|
-
Version 0.4.1 released on 2004-03-08.
|
3473
|
-
|
3474
|
-
Native Java implementation.
|
3475
|
-
Version 0.4.2-0.4.9 released between 2004-03-20 and 2004-06-11.
|
3476
|
-
|
3477
|
-
PR-29 functions for “problem sequences”.
|
3478
|
-
Version 0.5.0 released on 2004-06-26.
|
3479
|
-
|
3480
|
-
Many small portability fixes and wider use.
|
3481
|
-
Version 0.5.1 through 0.5.20, released between 2004-07-09 and
|
3482
|
-
2005-10-23.
|
3483
|
-
|
3484
|
-
Native C# implementation.
|
3485
|
-
Version 0.6.0 released on 2005-12-03.
|
3486
|
-
|
3487
|
-
Windows support through cross-compilation.
|
3488
|
-
Version 0.6.1 released on 2006-01-20.
|
3489
|
-
|
3490
|
-
Library declared stable by releasing v1.0.
|
3491
|
-
Version 1.0 released on 2007-07-31.
|
3492
|
-
|
3493
|
-
|
3494
|
-
File: libidn.info, Node: PR29 discussion, Next: On Label Separators, Prev: History, Up: Top
|
3495
|
-
|
3496
|
-
Appendix A PR29 discussion
|
3497
|
-
**************************
|
3498
|
-
|
3499
|
-
If you wish to experiment with a modified Unicode NFKC implementation
|
3500
|
-
according to the PR29 proposal, you may find the following bug report
|
3501
|
-
useful. However, I have not verified that the suggested modifications
|
3502
|
-
are correct. For reference, I’m including my response to the report as
|
3503
|
-
well.
|
3504
|
-
|
3505
|
-
From: Rick McGowan <rick@unicode.org>
|
3506
|
-
Subject: Possible bug and status of PR 29 change(s)
|
3507
|
-
To: bug-libidn@gnu.org
|
3508
|
-
Date: Wed, 27 Oct 2004 14:49:17 -0700
|
3509
|
-
|
3510
|
-
Hello. On behalf of the Unicode Consortium editorial committee, I would
|
3511
|
-
like to find out more information about the PR 29 fixes, if any, and
|
3512
|
-
functions in Libidn. Your implementation was listed in the text of PR29 as
|
3513
|
-
needing investigation, so I am following up on several implementations.
|
3514
|
-
|
3515
|
-
The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new
|
3516
|
-
draft of UAX #15 has been issued.
|
3517
|
-
|
3518
|
-
I have looked at Libidn 0.5.8 (today), and there may still be a possible
|
3519
|
-
bug in NFKC.java and nfkc.c.
|
3520
|
-
|
3521
|
-
------------------------------------------------------
|
3522
|
-
|
3523
|
-
1. In NFKC.java, this line in canonicalOrdering():
|
3524
|
-
|
3525
|
-
if (i > 0 && (last_cc == 0 || last_cc != cc)) {
|
3526
|
-
|
3527
|
-
should perhaps be changed to:
|
3528
|
-
|
3529
|
-
if (i > 0 && (last_cc == 0 || last_cc < cc)) {
|
3530
|
-
|
3531
|
-
but I'm not sure of the sense of this comparison.
|
3532
|
-
|
3533
|
-
------------------------------------------------------
|
3534
|
-
|
3535
|
-
2. In nfkc.c, function _g_utf8_normalize_wc() has this code:
|
3536
|
-
|
3537
|
-
if (i > 0 &&
|
3538
|
-
(last_cc == 0 || last_cc != cc) &&
|
3539
|
-
combine (wc_buffer[last_start], wc_buffer[i],
|
3540
|
-
&wc_buffer[last_start]))
|
3541
|
-
{
|
3542
|
-
|
3543
|
-
This appears to have the same bug as the current Python implementation (in
|
3544
|
-
Python 2.3.4). The code should be checking, as per new rule D2 UAX #15
|
3545
|
-
update, that the next combining character is the same or HIGHER than the
|
3546
|
-
current one. It now checks to see if it's non-zero and not equal.
|
3547
|
-
|
3548
|
-
The above line(s) should perhaps be changed to:
|
3549
|
-
|
3550
|
-
if (i > 0 &&
|
3551
|
-
(last_cc == 0 || last_cc < cc) &&
|
3552
|
-
combine (wc_buffer[last_start], wc_buffer[i],
|
3553
|
-
&wc_buffer[last_start]))
|
3554
|
-
{
|
3555
|
-
|
3556
|
-
but I'm not sure of the sense of the comparison (< or > or <=?) here.
|
3557
|
-
|
3558
|
-
In the text of PR29, I will be marking Libidn as "needs change" and adding
|
3559
|
-
the version number that I checked. If any further change is made, please
|
3560
|
-
let me know the release version, and I'll update again.
|
3561
|
-
|
3562
|
-
Regards,
|
3563
|
-
Rick McGowan
|
3564
|
-
|
3565
|
-
From: Simon Josefsson <jas@extundo.com>
|
3566
|
-
Subject: Re: Possible bug and status of PR 29 change(s)
|
3567
|
-
To: Rick McGowan <rick@unicode.org>
|
3568
|
-
Cc: bug-libidn@gnu.org
|
3569
|
-
Date: Thu, 28 Oct 2004 09:47:47 +0200
|
3570
|
-
|
3571
|
-
Rick McGowan <rick@unicode.org> writes:
|
3572
|
-
|
3573
|
-
> Hello. On behalf of the Unicode Consortium editorial committee, I would
|
3574
|
-
> like to find out more information about the PR 29 fixes, if any, and
|
3575
|
-
> functions in Libidn. Your implementation was listed in the text of PR29 as
|
3576
|
-
> needing investigation, so I am following up on several implementations.
|
3577
|
-
>
|
3578
|
-
> The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new
|
3579
|
-
> draft of UAX #15 has been issued.
|
3580
|
-
>
|
3581
|
-
> I have looked at Libidn 0.5.8 (today), and there may still be a possible
|
3582
|
-
> bug in NFKC.java and nfkc.c.
|
3583
|
-
|
3584
|
-
Hello Rick.
|
3585
|
-
|
3586
|
-
I believe the current behavior is intentional. Libidn do not aim to
|
3587
|
-
implement latest-and-greatest NFKC, it aim to implement the NFKC
|
3588
|
-
functionality required for StringPrep and IDN. As you may know,
|
3589
|
-
StringPrep/IDN reference Unicode 3.2.0, and explicitly says any later
|
3590
|
-
changes (which I consider PR29 as) do not apply.
|
3591
|
-
|
3592
|
-
In fact, I believe that would I incorporate the changes suggested in
|
3593
|
-
PR29, I would in fact be violating the IDN specifications.
|
3594
|
-
|
3595
|
-
Thanks for looking into the code and finding the place where the
|
3596
|
-
change could be made. I'll see if I can mention this in the manual
|
3597
|
-
somewhere, for technically interested readers.
|
3598
|
-
|
3599
|
-
Regards,
|
3600
|
-
Simon
|
3601
|
-
|
3602
|
-
|
3603
|
-
File: libidn.info, Node: On Label Separators, Next: Copying Information, Prev: PR29 discussion, Up: Top
|
3604
|
-
|
3605
|
-
Appendix B On Label Separators
|
3606
|
-
******************************
|
3607
|
-
|
3608
|
-
Some strings contains characters whose NFKC normalized form contain the
|
3609
|
-
ASCII dot (0x2E, “.”). Examples of these characters are U+2024 (ONE DOT
|
3610
|
-
LEADER) and U+248C (DIGIT FIVE FULL STOP). The strings have the
|
3611
|
-
interesting property that their IDNA ToASCII output will contain
|
3612
|
-
embedded dots. For example:
|
3613
|
-
|
3614
|
-
ToASCII (hi U+248C com) = hi5.com
|
3615
|
-
ToASCII (räksmörgås U+2024 com) = xn--rksmrgs.com-l8as9u
|
3616
|
-
|
3617
|
-
This demonstrate the two general cases: The first where the ASCII dot
|
3618
|
-
is part of an output that do not begin with the IDN prefix ‘xn--’. The
|
3619
|
-
second example illustrate when the dot is part of IDN prefixed with
|
3620
|
-
‘xn--’.
|
3621
|
-
|
3622
|
-
The input strings are, from the DNS point of view, a single label.
|
3623
|
-
The IDNA algorithm translate one label at a time. Thus, the output is
|
3624
|
-
expected to be only one label. What is important here is to make sure
|
3625
|
-
the DNS resolver receives the correct query. The DNS protocol does not
|
3626
|
-
use the dot to delimit labels on the wire, rather it uses length-value
|
3627
|
-
pairs. Thus the correct query would be for ‘{7}hi5.com’ and
|
3628
|
-
‘{22}xn--rksmrgs.com-l8as9u’ respectively.
|
3629
|
-
|
3630
|
-
Some implementations (1) have decided that these inputs strings are
|
3631
|
-
potentially confusing for the user. The string ‘hi U+248C com’ looks
|
3632
|
-
like ‘hi5.com’ on systems that support Unicode properly. These
|
3633
|
-
implementations do not follow RFC 3490. They yield:
|
3634
|
-
|
3635
|
-
ToASCII (hi U+248C com) = hi5.com
|
3636
|
-
ToASCII (räksmörgås U+2024 com) = xn--rksmrgs-5wao1o.com
|
3637
|
-
|
3638
|
-
The DNS query they perform are ‘{3}hi5{3}com’ and
|
3639
|
-
‘{18}xn--rksmrgs-5wao1o{3}com’ respectively. Arguably, this leads to a
|
3640
|
-
better user experience, and suggests that the IDNA specification is
|
3641
|
-
sub-optimal in this area.
|
3642
|
-
|
3643
|
-
B.1 Recommended Workaround
|
3644
|
-
==========================
|
3645
|
-
|
3646
|
-
It has been suggested to normalize the entire input string using NFKC
|
3647
|
-
before passing it to IDNA ToASCII. You may use
|
3648
|
-
‘stringprep_utf8_nfkc_normalize’ or ‘stringprep_ucs4_nfkc_normalize’.
|
3649
|
-
This appears to lead to similar behaviour as IE/Firefox, which would
|
3650
|
-
avoid the problem, but this needs to be confirmed. Feel free to discuss
|
3651
|
-
the issue with us.
|
3652
|
-
|
3653
|
-
Alternative workarounds are being considered. Eventually Libidn may
|
3654
|
-
implement a new flag to the ‘idna_*’ functions that implements a
|
3655
|
-
recommended way to work around this problem.
|
3656
|
-
|
3657
|
-
---------- Footnotes ----------
|
3658
|
-
|
3659
|
-
(1) Notably Microsoft’s Internet Explorer and Mozilla’s Firefox, but
|
3660
|
-
not Apple’s Safari.
|
3661
|
-
|
3662
|
-
|
3663
|
-
File: libidn.info, Node: Copying Information, Next: Function and Variable Index, Prev: On Label Separators, Up: Top
|
3664
|
-
|
3665
|
-
Appendix C Copying Information
|
3666
|
-
******************************
|
3667
|
-
|
3668
|
-
* Menu:
|
3669
|
-
|
3670
|
-
* GNU Free Documentation License:: License for copying this manual.
|
3671
|
-
|
3672
|
-
|
3673
|
-
File: libidn.info, Node: GNU Free Documentation License, Up: Copying Information
|
3674
|
-
|
3675
|
-
C.1 GNU Free Documentation License
|
3676
|
-
==================================
|
3677
|
-
|
3678
|
-
Version 1.3, 3 November 2008
|
3679
|
-
|
3680
|
-
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
3681
|
-
<http://fsf.org/>
|
3682
|
-
|
3683
|
-
Everyone is permitted to copy and distribute verbatim copies
|
3684
|
-
of this license document, but changing it is not allowed.
|
3685
|
-
|
3686
|
-
0. PREAMBLE
|
3687
|
-
|
3688
|
-
The purpose of this License is to make a manual, textbook, or other
|
3689
|
-
functional and useful document "free" in the sense of freedom: to
|
3690
|
-
assure everyone the effective freedom to copy and redistribute it,
|
3691
|
-
with or without modifying it, either commercially or
|
3692
|
-
noncommercially. Secondarily, this License preserves for the
|
3693
|
-
author and publisher a way to get credit for their work, while not
|
3694
|
-
being considered responsible for modifications made by others.
|
3695
|
-
|
3696
|
-
This License is a kind of “copyleft”, which means that derivative
|
3697
|
-
works of the document must themselves be free in the same sense.
|
3698
|
-
It complements the GNU General Public License, which is a copyleft
|
3699
|
-
license designed for free software.
|
3700
|
-
|
3701
|
-
We have designed this License in order to use it for manuals for
|
3702
|
-
free software, because free software needs free documentation: a
|
3703
|
-
free program should come with manuals providing the same freedoms
|
3704
|
-
that the software does. But this License is not limited to
|
3705
|
-
software manuals; it can be used for any textual work, regardless
|
3706
|
-
of subject matter or whether it is published as a printed book. We
|
3707
|
-
recommend this License principally for works whose purpose is
|
3708
|
-
instruction or reference.
|
3709
|
-
|
3710
|
-
1. APPLICABILITY AND DEFINITIONS
|
3711
|
-
|
3712
|
-
This License applies to any manual or other work, in any medium,
|
3713
|
-
that contains a notice placed by the copyright holder saying it can
|
3714
|
-
be distributed under the terms of this License. Such a notice
|
3715
|
-
grants a world-wide, royalty-free license, unlimited in duration,
|
3716
|
-
to use that work under the conditions stated herein. The
|
3717
|
-
“Document”, below, refers to any such manual or work. Any member
|
3718
|
-
of the public is a licensee, and is addressed as “you”. You accept
|
3719
|
-
the license if you copy, modify or distribute the work in a way
|
3720
|
-
requiring permission under copyright law.
|
3721
|
-
|
3722
|
-
A “Modified Version” of the Document means any work containing the
|
3723
|
-
Document or a portion of it, either copied verbatim, or with
|
3724
|
-
modifications and/or translated into another language.
|
3725
|
-
|
3726
|
-
A “Secondary Section” is a named appendix or a front-matter section
|
3727
|
-
of the Document that deals exclusively with the relationship of the
|
3728
|
-
publishers or authors of the Document to the Document’s overall
|
3729
|
-
subject (or to related matters) and contains nothing that could
|
3730
|
-
fall directly within that overall subject. (Thus, if the Document
|
3731
|
-
is in part a textbook of mathematics, a Secondary Section may not
|
3732
|
-
explain any mathematics.) The relationship could be a matter of
|
3733
|
-
historical connection with the subject or with related matters, or
|
3734
|
-
of legal, commercial, philosophical, ethical or political position
|
3735
|
-
regarding them.
|
3736
|
-
|
3737
|
-
The “Invariant Sections” are certain Secondary Sections whose
|
3738
|
-
titles are designated, as being those of Invariant Sections, in the
|
3739
|
-
notice that says that the Document is released under this License.
|
3740
|
-
If a section does not fit the above definition of Secondary then it
|
3741
|
-
is not allowed to be designated as Invariant. The Document may
|
3742
|
-
contain zero Invariant Sections. If the Document does not identify
|
3743
|
-
any Invariant Sections then there are none.
|
3744
|
-
|
3745
|
-
The “Cover Texts” are certain short passages of text that are
|
3746
|
-
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
3747
|
-
that says that the Document is released under this License. A
|
3748
|
-
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
3749
|
-
be at most 25 words.
|
3750
|
-
|
3751
|
-
A “Transparent” copy of the Document means a machine-readable copy,
|
3752
|
-
represented in a format whose specification is available to the
|
3753
|
-
general public, that is suitable for revising the document
|
3754
|
-
straightforwardly with generic text editors or (for images composed
|
3755
|
-
of pixels) generic paint programs or (for drawings) some widely
|
3756
|
-
available drawing editor, and that is suitable for input to text
|
3757
|
-
formatters or for automatic translation to a variety of formats
|
3758
|
-
suitable for input to text formatters. A copy made in an otherwise
|
3759
|
-
Transparent file format whose markup, or absence of markup, has
|
3760
|
-
been arranged to thwart or discourage subsequent modification by
|
3761
|
-
readers is not Transparent. An image format is not Transparent if
|
3762
|
-
used for any substantial amount of text. A copy that is not
|
3763
|
-
“Transparent” is called “Opaque”.
|
3764
|
-
|
3765
|
-
Examples of suitable formats for Transparent copies include plain
|
3766
|
-
ASCII without markup, Texinfo input format, LaTeX input format,
|
3767
|
-
SGML or XML using a publicly available DTD, and standard-conforming
|
3768
|
-
simple HTML, PostScript or PDF designed for human modification.
|
3769
|
-
Examples of transparent image formats include PNG, XCF and JPG.
|
3770
|
-
Opaque formats include proprietary formats that can be read and
|
3771
|
-
edited only by proprietary word processors, SGML or XML for which
|
3772
|
-
the DTD and/or processing tools are not generally available, and
|
3773
|
-
the machine-generated HTML, PostScript or PDF produced by some word
|
3774
|
-
processors for output purposes only.
|
3775
|
-
|
3776
|
-
The “Title Page” means, for a printed book, the title page itself,
|
3777
|
-
plus such following pages as are needed to hold, legibly, the
|
3778
|
-
material this License requires to appear in the title page. For
|
3779
|
-
works in formats which do not have any title page as such, “Title
|
3780
|
-
Page” means the text near the most prominent appearance of the
|
3781
|
-
work’s title, preceding the beginning of the body of the text.
|
3782
|
-
|
3783
|
-
The “publisher” means any person or entity that distributes copies
|
3784
|
-
of the Document to the public.
|
3785
|
-
|
3786
|
-
A section “Entitled XYZ” means a named subunit of the Document
|
3787
|
-
whose title either is precisely XYZ or contains XYZ in parentheses
|
3788
|
-
following text that translates XYZ in another language. (Here XYZ
|
3789
|
-
stands for a specific section name mentioned below, such as
|
3790
|
-
“Acknowledgements”, “Dedications”, “Endorsements”, or “History”.)
|
3791
|
-
To “Preserve the Title” of such a section when you modify the
|
3792
|
-
Document means that it remains a section “Entitled XYZ” according
|
3793
|
-
to this definition.
|
3794
|
-
|
3795
|
-
The Document may include Warranty Disclaimers next to the notice
|
3796
|
-
which states that this License applies to the Document. These
|
3797
|
-
Warranty Disclaimers are considered to be included by reference in
|
3798
|
-
this License, but only as regards disclaiming warranties: any other
|
3799
|
-
implication that these Warranty Disclaimers may have is void and
|
3800
|
-
has no effect on the meaning of this License.
|
3801
|
-
|
3802
|
-
2. VERBATIM COPYING
|
3803
|
-
|
3804
|
-
You may copy and distribute the Document in any medium, either
|
3805
|
-
commercially or noncommercially, provided that this License, the
|
3806
|
-
copyright notices, and the license notice saying this License
|
3807
|
-
applies to the Document are reproduced in all copies, and that you
|
3808
|
-
add no other conditions whatsoever to those of this License. You
|
3809
|
-
may not use technical measures to obstruct or control the reading
|
3810
|
-
or further copying of the copies you make or distribute. However,
|
3811
|
-
you may accept compensation in exchange for copies. If you
|
3812
|
-
distribute a large enough number of copies you must also follow the
|
3813
|
-
conditions in section 3.
|
3814
|
-
|
3815
|
-
You may also lend copies, under the same conditions stated above,
|
3816
|
-
and you may publicly display copies.
|
3817
|
-
|
3818
|
-
3. COPYING IN QUANTITY
|
3819
|
-
|
3820
|
-
If you publish printed copies (or copies in media that commonly
|
3821
|
-
have printed covers) of the Document, numbering more than 100, and
|
3822
|
-
the Document’s license notice requires Cover Texts, you must
|
3823
|
-
enclose the copies in covers that carry, clearly and legibly, all
|
3824
|
-
these Cover Texts: Front-Cover Texts on the front cover, and
|
3825
|
-
Back-Cover Texts on the back cover. Both covers must also clearly
|
3826
|
-
and legibly identify you as the publisher of these copies. The
|
3827
|
-
front cover must present the full title with all words of the title
|
3828
|
-
equally prominent and visible. You may add other material on the
|
3829
|
-
covers in addition. Copying with changes limited to the covers, as
|
3830
|
-
long as they preserve the title of the Document and satisfy these
|
3831
|
-
conditions, can be treated as verbatim copying in other respects.
|
3832
|
-
|
3833
|
-
If the required texts for either cover are too voluminous to fit
|
3834
|
-
legibly, you should put the first ones listed (as many as fit
|
3835
|
-
reasonably) on the actual cover, and continue the rest onto
|
3836
|
-
adjacent pages.
|
3837
|
-
|
3838
|
-
If you publish or distribute Opaque copies of the Document
|
3839
|
-
numbering more than 100, you must either include a machine-readable
|
3840
|
-
Transparent copy along with each Opaque copy, or state in or with
|
3841
|
-
each Opaque copy a computer-network location from which the general
|
3842
|
-
network-using public has access to download using public-standard
|
3843
|
-
network protocols a complete Transparent copy of the Document, free
|
3844
|
-
of added material. If you use the latter option, you must take
|
3845
|
-
reasonably prudent steps, when you begin distribution of Opaque
|
3846
|
-
copies in quantity, to ensure that this Transparent copy will
|
3847
|
-
remain thus accessible at the stated location until at least one
|
3848
|
-
year after the last time you distribute an Opaque copy (directly or
|
3849
|
-
through your agents or retailers) of that edition to the public.
|
3850
|
-
|
3851
|
-
It is requested, but not required, that you contact the authors of
|
3852
|
-
the Document well before redistributing any large number of copies,
|
3853
|
-
to give them a chance to provide you with an updated version of the
|
3854
|
-
Document.
|
3855
|
-
|
3856
|
-
4. MODIFICATIONS
|
3857
|
-
|
3858
|
-
You may copy and distribute a Modified Version of the Document
|
3859
|
-
under the conditions of sections 2 and 3 above, provided that you
|
3860
|
-
release the Modified Version under precisely this License, with the
|
3861
|
-
Modified Version filling the role of the Document, thus licensing
|
3862
|
-
distribution and modification of the Modified Version to whoever
|
3863
|
-
possesses a copy of it. In addition, you must do these things in
|
3864
|
-
the Modified Version:
|
3865
|
-
|
3866
|
-
A. Use in the Title Page (and on the covers, if any) a title
|
3867
|
-
distinct from that of the Document, and from those of previous
|
3868
|
-
versions (which should, if there were any, be listed in the
|
3869
|
-
History section of the Document). You may use the same title
|
3870
|
-
as a previous version if the original publisher of that
|
3871
|
-
version gives permission.
|
3872
|
-
|
3873
|
-
B. List on the Title Page, as authors, one or more persons or
|
3874
|
-
entities responsible for authorship of the modifications in
|
3875
|
-
the Modified Version, together with at least five of the
|
3876
|
-
principal authors of the Document (all of its principal
|
3877
|
-
authors, if it has fewer than five), unless they release you
|
3878
|
-
from this requirement.
|
3879
|
-
|
3880
|
-
C. State on the Title page the name of the publisher of the
|
3881
|
-
Modified Version, as the publisher.
|
3882
|
-
|
3883
|
-
D. Preserve all the copyright notices of the Document.
|
3884
|
-
|
3885
|
-
E. Add an appropriate copyright notice for your modifications
|
3886
|
-
adjacent to the other copyright notices.
|
3887
|
-
|
3888
|
-
F. Include, immediately after the copyright notices, a license
|
3889
|
-
notice giving the public permission to use the Modified
|
3890
|
-
Version under the terms of this License, in the form shown in
|
3891
|
-
the Addendum below.
|
3892
|
-
|
3893
|
-
G. Preserve in that license notice the full lists of Invariant
|
3894
|
-
Sections and required Cover Texts given in the Document’s
|
3895
|
-
license notice.
|
3896
|
-
|
3897
|
-
H. Include an unaltered copy of this License.
|
3898
|
-
|
3899
|
-
I. Preserve the section Entitled “History”, Preserve its Title,
|
3900
|
-
and add to it an item stating at least the title, year, new
|
3901
|
-
authors, and publisher of the Modified Version as given on the
|
3902
|
-
Title Page. If there is no section Entitled “History” in the
|
3903
|
-
Document, create one stating the title, year, authors, and
|
3904
|
-
publisher of the Document as given on its Title Page, then add
|
3905
|
-
an item describing the Modified Version as stated in the
|
3906
|
-
previous sentence.
|
3907
|
-
|
3908
|
-
J. Preserve the network location, if any, given in the Document
|
3909
|
-
for public access to a Transparent copy of the Document, and
|
3910
|
-
likewise the network locations given in the Document for
|
3911
|
-
previous versions it was based on. These may be placed in the
|
3912
|
-
“History” section. You may omit a network location for a work
|
3913
|
-
that was published at least four years before the Document
|
3914
|
-
itself, or if the original publisher of the version it refers
|
3915
|
-
to gives permission.
|
3916
|
-
|
3917
|
-
K. For any section Entitled “Acknowledgements” or “Dedications”,
|
3918
|
-
Preserve the Title of the section, and preserve in the section
|
3919
|
-
all the substance and tone of each of the contributor
|
3920
|
-
acknowledgements and/or dedications given therein.
|
3921
|
-
|
3922
|
-
L. Preserve all the Invariant Sections of the Document, unaltered
|
3923
|
-
in their text and in their titles. Section numbers or the
|
3924
|
-
equivalent are not considered part of the section titles.
|
3925
|
-
|
3926
|
-
M. Delete any section Entitled “Endorsements”. Such a section
|
3927
|
-
may not be included in the Modified Version.
|
3928
|
-
|
3929
|
-
N. Do not retitle any existing section to be Entitled
|
3930
|
-
“Endorsements” or to conflict in title with any Invariant
|
3931
|
-
Section.
|
3932
|
-
|
3933
|
-
O. Preserve any Warranty Disclaimers.
|
3934
|
-
|
3935
|
-
If the Modified Version includes new front-matter sections or
|
3936
|
-
appendices that qualify as Secondary Sections and contain no
|
3937
|
-
material copied from the Document, you may at your option designate
|
3938
|
-
some or all of these sections as invariant. To do this, add their
|
3939
|
-
titles to the list of Invariant Sections in the Modified Version’s
|
3940
|
-
license notice. These titles must be distinct from any other
|
3941
|
-
section titles.
|
3942
|
-
|
3943
|
-
You may add a section Entitled “Endorsements”, provided it contains
|
3944
|
-
nothing but endorsements of your Modified Version by various
|
3945
|
-
parties—for example, statements of peer review or that the text has
|
3946
|
-
been approved by an organization as the authoritative definition of
|
3947
|
-
a standard.
|
3948
|
-
|
3949
|
-
You may add a passage of up to five words as a Front-Cover Text,
|
3950
|
-
and a passage of up to 25 words as a Back-Cover Text, to the end of
|
3951
|
-
the list of Cover Texts in the Modified Version. Only one passage
|
3952
|
-
of Front-Cover Text and one of Back-Cover Text may be added by (or
|
3953
|
-
through arrangements made by) any one entity. If the Document
|
3954
|
-
already includes a cover text for the same cover, previously added
|
3955
|
-
by you or by arrangement made by the same entity you are acting on
|
3956
|
-
behalf of, you may not add another; but you may replace the old
|
3957
|
-
one, on explicit permission from the previous publisher that added
|
3958
|
-
the old one.
|
3959
|
-
|
3960
|
-
The author(s) and publisher(s) of the Document do not by this
|
3961
|
-
License give permission to use their names for publicity for or to
|
3962
|
-
assert or imply endorsement of any Modified Version.
|
3963
|
-
|
3964
|
-
5. COMBINING DOCUMENTS
|
3965
|
-
|
3966
|
-
You may combine the Document with other documents released under
|
3967
|
-
this License, under the terms defined in section 4 above for
|
3968
|
-
modified versions, provided that you include in the combination all
|
3969
|
-
of the Invariant Sections of all of the original documents,
|
3970
|
-
unmodified, and list them all as Invariant Sections of your
|
3971
|
-
combined work in its license notice, and that you preserve all
|
3972
|
-
their Warranty Disclaimers.
|
3973
|
-
|
3974
|
-
The combined work need only contain one copy of this License, and
|
3975
|
-
multiple identical Invariant Sections may be replaced with a single
|
3976
|
-
copy. If there are multiple Invariant Sections with the same name
|
3977
|
-
but different contents, make the title of each such section unique
|
3978
|
-
by adding at the end of it, in parentheses, the name of the
|
3979
|
-
original author or publisher of that section if known, or else a
|
3980
|
-
unique number. Make the same adjustment to the section titles in
|
3981
|
-
the list of Invariant Sections in the license notice of the
|
3982
|
-
combined work.
|
3983
|
-
|
3984
|
-
In the combination, you must combine any sections Entitled
|
3985
|
-
“History” in the various original documents, forming one section
|
3986
|
-
Entitled “History”; likewise combine any sections Entitled
|
3987
|
-
“Acknowledgements”, and any sections Entitled “Dedications”. You
|
3988
|
-
must delete all sections Entitled “Endorsements.”
|
3989
|
-
|
3990
|
-
6. COLLECTIONS OF DOCUMENTS
|
3991
|
-
|
3992
|
-
You may make a collection consisting of the Document and other
|
3993
|
-
documents released under this License, and replace the individual
|
3994
|
-
copies of this License in the various documents with a single copy
|
3995
|
-
that is included in the collection, provided that you follow the
|
3996
|
-
rules of this License for verbatim copying of each of the documents
|
3997
|
-
in all other respects.
|
3998
|
-
|
3999
|
-
You may extract a single document from such a collection, and
|
4000
|
-
distribute it individually under this License, provided you insert
|
4001
|
-
a copy of this License into the extracted document, and follow this
|
4002
|
-
License in all other respects regarding verbatim copying of that
|
4003
|
-
document.
|
4004
|
-
|
4005
|
-
7. AGGREGATION WITH INDEPENDENT WORKS
|
4006
|
-
|
4007
|
-
A compilation of the Document or its derivatives with other
|
4008
|
-
separate and independent documents or works, in or on a volume of a
|
4009
|
-
storage or distribution medium, is called an “aggregate” if the
|
4010
|
-
copyright resulting from the compilation is not used to limit the
|
4011
|
-
legal rights of the compilation’s users beyond what the individual
|
4012
|
-
works permit. When the Document is included in an aggregate, this
|
4013
|
-
License does not apply to the other works in the aggregate which
|
4014
|
-
are not themselves derivative works of the Document.
|
4015
|
-
|
4016
|
-
If the Cover Text requirement of section 3 is applicable to these
|
4017
|
-
copies of the Document, then if the Document is less than one half
|
4018
|
-
of the entire aggregate, the Document’s Cover Texts may be placed
|
4019
|
-
on covers that bracket the Document within the aggregate, or the
|
4020
|
-
electronic equivalent of covers if the Document is in electronic
|
4021
|
-
form. Otherwise they must appear on printed covers that bracket
|
4022
|
-
the whole aggregate.
|
4023
|
-
|
4024
|
-
8. TRANSLATION
|
4025
|
-
|
4026
|
-
Translation is considered a kind of modification, so you may
|
4027
|
-
distribute translations of the Document under the terms of section
|
4028
|
-
4. Replacing Invariant Sections with translations requires special
|
4029
|
-
permission from their copyright holders, but you may include
|
4030
|
-
translations of some or all Invariant Sections in addition to the
|
4031
|
-
original versions of these Invariant Sections. You may include a
|
4032
|
-
translation of this License, and all the license notices in the
|
4033
|
-
Document, and any Warranty Disclaimers, provided that you also
|
4034
|
-
include the original English version of this License and the
|
4035
|
-
original versions of those notices and disclaimers. In case of a
|
4036
|
-
disagreement between the translation and the original version of
|
4037
|
-
this License or a notice or disclaimer, the original version will
|
4038
|
-
prevail.
|
4039
|
-
|
4040
|
-
If a section in the Document is Entitled “Acknowledgements”,
|
4041
|
-
“Dedications”, or “History”, the requirement (section 4) to
|
4042
|
-
Preserve its Title (section 1) will typically require changing the
|
4043
|
-
actual title.
|
4044
|
-
|
4045
|
-
9. TERMINATION
|
4046
|
-
|
4047
|
-
You may not copy, modify, sublicense, or distribute the Document
|
4048
|
-
except as expressly provided under this License. Any attempt
|
4049
|
-
otherwise to copy, modify, sublicense, or distribute it is void,
|
4050
|
-
and will automatically terminate your rights under this License.
|
4051
|
-
|
4052
|
-
However, if you cease all violation of this License, then your
|
4053
|
-
license from a particular copyright holder is reinstated (a)
|
4054
|
-
provisionally, unless and until the copyright holder explicitly and
|
4055
|
-
finally terminates your license, and (b) permanently, if the
|
4056
|
-
copyright holder fails to notify you of the violation by some
|
4057
|
-
reasonable means prior to 60 days after the cessation.
|
4058
|
-
|
4059
|
-
Moreover, your license from a particular copyright holder is
|
4060
|
-
reinstated permanently if the copyright holder notifies you of the
|
4061
|
-
violation by some reasonable means, this is the first time you have
|
4062
|
-
received notice of violation of this License (for any work) from
|
4063
|
-
that copyright holder, and you cure the violation prior to 30 days
|
4064
|
-
after your receipt of the notice.
|
4065
|
-
|
4066
|
-
Termination of your rights under this section does not terminate
|
4067
|
-
the licenses of parties who have received copies or rights from you
|
4068
|
-
under this License. If your rights have been terminated and not
|
4069
|
-
permanently reinstated, receipt of a copy of some or all of the
|
4070
|
-
same material does not give you any rights to use it.
|
4071
|
-
|
4072
|
-
10. FUTURE REVISIONS OF THIS LICENSE
|
4073
|
-
|
4074
|
-
The Free Software Foundation may publish new, revised versions of
|
4075
|
-
the GNU Free Documentation License from time to time. Such new
|
4076
|
-
versions will be similar in spirit to the present version, but may
|
4077
|
-
differ in detail to address new problems or concerns. See
|
4078
|
-
<http://www.gnu.org/copyleft/>.
|
4079
|
-
|
4080
|
-
Each version of the License is given a distinguishing version
|
4081
|
-
number. If the Document specifies that a particular numbered
|
4082
|
-
version of this License “or any later version” applies to it, you
|
4083
|
-
have the option of following the terms and conditions either of
|
4084
|
-
that specified version or of any later version that has been
|
4085
|
-
published (not as a draft) by the Free Software Foundation. If the
|
4086
|
-
Document does not specify a version number of this License, you may
|
4087
|
-
choose any version ever published (not as a draft) by the Free
|
4088
|
-
Software Foundation. If the Document specifies that a proxy can
|
4089
|
-
decide which future versions of this License can be used, that
|
4090
|
-
proxy’s public statement of acceptance of a version permanently
|
4091
|
-
authorizes you to choose that version for the Document.
|
4092
|
-
|
4093
|
-
11. RELICENSING
|
4094
|
-
|
4095
|
-
“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
|
4096
|
-
World Wide Web server that publishes copyrightable works and also
|
4097
|
-
provides prominent facilities for anybody to edit those works. A
|
4098
|
-
public wiki that anybody can edit is an example of such a server.
|
4099
|
-
A “Massive Multiauthor Collaboration” (or “MMC”) contained in the
|
4100
|
-
site means any set of copyrightable works thus published on the MMC
|
4101
|
-
site.
|
4102
|
-
|
4103
|
-
“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
|
4104
|
-
license published by Creative Commons Corporation, a not-for-profit
|
4105
|
-
corporation with a principal place of business in San Francisco,
|
4106
|
-
California, as well as future copyleft versions of that license
|
4107
|
-
published by that same organization.
|
4108
|
-
|
4109
|
-
“Incorporate” means to publish or republish a Document, in whole or
|
4110
|
-
in part, as part of another Document.
|
4111
|
-
|
4112
|
-
An MMC is “eligible for relicensing” if it is licensed under this
|
4113
|
-
License, and if all works that were first published under this
|
4114
|
-
License somewhere other than this MMC, and subsequently
|
4115
|
-
incorporated in whole or in part into the MMC, (1) had no cover
|
4116
|
-
texts or invariant sections, and (2) were thus incorporated prior
|
4117
|
-
to November 1, 2008.
|
4118
|
-
|
4119
|
-
The operator of an MMC Site may republish an MMC contained in the
|
4120
|
-
site under CC-BY-SA on the same site at any time before August 1,
|
4121
|
-
2009, provided the MMC is eligible for relicensing.
|
4122
|
-
|
4123
|
-
ADDENDUM: How to use this License for your documents
|
4124
|
-
====================================================
|
4125
|
-
|
4126
|
-
To use this License in a document you have written, include a copy of
|
4127
|
-
the License in the document and put the following copyright and license
|
4128
|
-
notices just after the title page:
|
4129
|
-
|
4130
|
-
Copyright (C) YEAR YOUR NAME.
|
4131
|
-
Permission is granted to copy, distribute and/or modify this document
|
4132
|
-
under the terms of the GNU Free Documentation License, Version 1.3
|
4133
|
-
or any later version published by the Free Software Foundation;
|
4134
|
-
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
4135
|
-
Texts. A copy of the license is included in the section entitled ``GNU
|
4136
|
-
Free Documentation License''.
|
4137
|
-
|
4138
|
-
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
4139
|
-
Texts, replace the “with…Texts.” line with this:
|
4140
|
-
|
4141
|
-
with the Invariant Sections being LIST THEIR TITLES, with
|
4142
|
-
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
4143
|
-
being LIST.
|
4144
|
-
|
4145
|
-
If you have Invariant Sections without Cover Texts, or some other
|
4146
|
-
combination of the three, merge those two alternatives to suit the
|
4147
|
-
situation.
|
4148
|
-
|
4149
|
-
If your document contains nontrivial examples of program code, we
|
4150
|
-
recommend releasing these examples in parallel under your choice of free
|
4151
|
-
software license, such as the GNU General Public License, to permit
|
4152
|
-
their use in free software.
|
4153
|
-
|
4154
|
-
|
4155
|
-
File: libidn.info, Node: Function and Variable Index, Next: Concept Index, Prev: Copying Information, Up: Top
|
4156
|
-
|
4157
|
-
Function and Variable Index
|
4158
|
-
***************************
|
4159
|
-
|
4160
|
-
[index]
|
4161
|
-
* Menu:
|
4162
|
-
|
4163
|
-
* idna-to-ascii: Emacs API. (line 64)
|
4164
|
-
* idna-to-unicode: Emacs API. (line 69)
|
4165
|
-
* idna_strerror: IDNA Functions. (line 309)
|
4166
|
-
* idna_to_ascii_4i: IDNA Functions. (line 66)
|
4167
|
-
* idna_to_ascii_4z: IDNA Functions. (line 150)
|
4168
|
-
* idna_to_ascii_8z: IDNA Functions. (line 168)
|
4169
|
-
* idna_to_ascii_lz: IDNA Functions. (line 186)
|
4170
|
-
* idna_to_unicode_44i: IDNA Functions. (line 104)
|
4171
|
-
* idna_to_unicode_4z4z: IDNA Functions. (line 208)
|
4172
|
-
* idna_to_unicode_8z4z: IDNA Functions. (line 227)
|
4173
|
-
* idna_to_unicode_8z8z: IDNA Functions. (line 246)
|
4174
|
-
* idna_to_unicode_8zlz: IDNA Functions. (line 265)
|
4175
|
-
* idna_to_unicode_lzlz: IDNA Functions. (line 285)
|
4176
|
-
* idn_free: Memory handling under Windows.
|
4177
|
-
(line 30)
|
4178
|
-
* pr29_4: PR29 Functions. (line 54)
|
4179
|
-
* pr29_4z: PR29 Functions. (line 74)
|
4180
|
-
* pr29_8z: PR29 Functions. (line 89)
|
4181
|
-
* pr29_strerror: PR29 Functions. (line 108)
|
4182
|
-
* punycode-decode: Emacs API. (line 38)
|
4183
|
-
* punycode-encode: Emacs API. (line 34)
|
4184
|
-
* punycode_decode: Punycode Functions. (line 92)
|
4185
|
-
* punycode_encode: Punycode Functions. (line 48)
|
4186
|
-
* punycode_strerror: Punycode Functions. (line 138)
|
4187
|
-
* stringprep: Stringprep Functions.
|
4188
|
-
(line 124)
|
4189
|
-
* stringprep_4i: Stringprep Functions.
|
4190
|
-
(line 54)
|
4191
|
-
* stringprep_4zi: Stringprep Functions.
|
4192
|
-
(line 93)
|
4193
|
-
* stringprep_check_version: Version Check. (line 15)
|
4194
|
-
* stringprep_convert: Utility Functions. (line 163)
|
4195
|
-
* stringprep_iscsi: Stringprep Functions.
|
4196
|
-
(line 257)
|
4197
|
-
* stringprep_locale_charset: Utility Functions. (line 141)
|
4198
|
-
* stringprep_locale_to_utf8: Utility Functions. (line 180)
|
4199
|
-
* stringprep_nameprep_no_unassigned: Stringprep Functions.
|
4200
|
-
(line 246)
|
4201
|
-
* stringprep_plain: Stringprep Functions.
|
4202
|
-
(line 266)
|
4203
|
-
* stringprep_profile: Stringprep Functions.
|
4204
|
-
(line 159)
|
4205
|
-
* stringprep_strerror: Stringprep Functions.
|
4206
|
-
(line 193)
|
4207
|
-
* stringprep_ucs4_nfkc_normalize: Utility Functions. (line 97)
|
4208
|
-
* stringprep_ucs4_to_utf8: Utility Functions. (line 50)
|
4209
|
-
* stringprep_unichar_to_utf8: Utility Functions. (line 24)
|
4210
|
-
* stringprep_utf8_nfkc_normalize: Utility Functions. (line 112)
|
4211
|
-
* stringprep_utf8_to_locale: Utility Functions. (line 192)
|
4212
|
-
* stringprep_utf8_to_ucs4: Utility Functions. (line 73)
|
4213
|
-
* stringprep_utf8_to_unichar: Utility Functions. (line 38)
|
4214
|
-
* stringprep_xmpp_nodeprep: Stringprep Functions.
|
4215
|
-
(line 275)
|
4216
|
-
* stringprep_xmpp_resourceprep: Stringprep Functions.
|
4217
|
-
(line 284)
|
4218
|
-
* tld_check_4: TLD Functions. (line 174)
|
4219
|
-
* tld_check_4t: TLD Functions. (line 42)
|
4220
|
-
* tld_check_4tz: TLD Functions. (line 66)
|
4221
|
-
* tld_check_4z: TLD Functions. (line 203)
|
4222
|
-
* tld_check_8z: TLD Functions. (line 229)
|
4223
|
-
* tld_check_lz: TLD Functions. (line 257)
|
4224
|
-
* tld_default_table: TLD Functions. (line 153)
|
4225
|
-
* tld_get_4: TLD Functions. (line 90)
|
4226
|
-
* tld_get_4z: TLD Functions. (line 108)
|
4227
|
-
* tld_get_table: TLD Functions. (line 137)
|
4228
|
-
* tld_get_z: TLD Functions. (line 122)
|
4229
|
-
* tld_strerror: TLD Functions. (line 289)
|
4230
|
-
|
4231
|
-
|
4232
|
-
File: libidn.info, Node: Concept Index, Prev: Function and Variable Index, Up: Top
|
4233
|
-
|
4234
|
-
Concept Index
|
4235
|
-
*************
|
4236
|
-
|
4237
|
-
[index]
|
4238
|
-
* Menu:
|
4239
|
-
|
4240
|
-
* AIX: Supported Platforms. (line 74)
|
4241
|
-
* ARM: Supported Platforms. (line 128)
|
4242
|
-
* Autoconf tests: Autoconf tests. (line 6)
|
4243
|
-
* command line: Invoking idn. (line 5)
|
4244
|
-
* Compiling your application: Building the source. (line 6)
|
4245
|
-
* Configure tests: Autoconf tests. (line 6)
|
4246
|
-
* Contributing: Contributing. (line 6)
|
4247
|
-
* de-allocation: Memory handling under Windows.
|
4248
|
-
(line 6)
|
4249
|
-
* Debian: Supported Platforms. (line 10)
|
4250
|
-
* Debian <1>: Supported Platforms. (line 22)
|
4251
|
-
* Download: Downloading and Installing.
|
4252
|
-
(line 6)
|
4253
|
-
* Examples: Examples. (line 6)
|
4254
|
-
* FDL, GNU Free Documentation License: GNU Free Documentation License.
|
4255
|
-
(line 6)
|
4256
|
-
* free: Memory handling under Windows.
|
4257
|
-
(line 6)
|
4258
|
-
* FreeBSD: Supported Platforms. (line 110)
|
4259
|
-
* Hacking: Contributing. (line 6)
|
4260
|
-
* heap memory: Memory handling under Windows.
|
4261
|
-
(line 6)
|
4262
|
-
* HP-UX: Supported Platforms. (line 82)
|
4263
|
-
* IBM: Supported Platforms. (line 136)
|
4264
|
-
* idn: Invoking idn. (line 6)
|
4265
|
-
* IDNA Functions: IDNA Functions. (line 6)
|
4266
|
-
* Installation: Downloading and Installing.
|
4267
|
-
(line 6)
|
4268
|
-
* invoking ‘idn’: Invoking idn. (line 6)
|
4269
|
-
* IRIX: Supported Platforms. (line 70)
|
4270
|
-
* MacOS X: Supported Platforms. (line 116)
|
4271
|
-
* MacOS X <1>: Supported Platforms. (line 120)
|
4272
|
-
* Mandrake: Supported Platforms. (line 66)
|
4273
|
-
* Memory handling: Memory handling under Windows.
|
4274
|
-
(line 6)
|
4275
|
-
* Microsoft: Supported Platforms. (line 132)
|
4276
|
-
* mingw32: Supported Platforms. (line 132)
|
4277
|
-
* Motorola Coldfire: Supported Platforms. (line 124)
|
4278
|
-
* NetBSD: Supported Platforms. (line 100)
|
4279
|
-
* OpenBSD: Supported Platforms. (line 105)
|
4280
|
-
* OpenPower 720: Supported Platforms. (line 45)
|
4281
|
-
* OS/2: Supported Platforms. (line 136)
|
4282
|
-
* PR29 Functions: PR29 Functions. (line 6)
|
4283
|
-
* Punycode Functions: Punycode Functions. (line 6)
|
4284
|
-
* RedHat: Supported Platforms. (line 49)
|
4285
|
-
* RedHat <1>: Supported Platforms. (line 54)
|
4286
|
-
* RedHat <2>: Supported Platforms. (line 62)
|
4287
|
-
* RedHat Advanced Server: Supported Platforms. (line 58)
|
4288
|
-
* Reporting Bugs: Bug Reports. (line 6)
|
4289
|
-
* Solaris: Supported Platforms. (line 87)
|
4290
|
-
* Solaris <1>: Supported Platforms. (line 91)
|
4291
|
-
* Solaris <2>: Supported Platforms. (line 95)
|
4292
|
-
* Stringprep Functions: Stringprep Functions.
|
4293
|
-
(line 6)
|
4294
|
-
* SuSE: Supported Platforms. (line 31)
|
4295
|
-
* SuSE Linux: Supported Platforms. (line 36)
|
4296
|
-
* SuSE Linux <1>: Supported Platforms. (line 40)
|
4297
|
-
* SuSE Linux <2>: Supported Platforms. (line 45)
|
4298
|
-
* TLD Functions: TLD Functions. (line 6)
|
4299
|
-
* Tru64: Supported Platforms. (line 26)
|
4300
|
-
* uClibc: Supported Platforms. (line 124)
|
4301
|
-
* uClinux: Supported Platforms. (line 124)
|
4302
|
-
* Utility Functions: Utility Functions. (line 6)
|
4303
|
-
* Windows: Supported Platforms. (line 78)
|
4304
|
-
* Windows <1>: Supported Platforms. (line 132)
|
4305
|
-
|
4306
|
-
|
4307
|
-
|
4308
|
-
Tag Table:
|
4309
|
-
Node: Top1021
|
4310
|
-
Node: Introduction2727
|
4311
|
-
Node: Getting Started5039
|
4312
|
-
Node: Features6150
|
4313
|
-
Node: Library Overview7504
|
4314
|
-
Node: Supported Platforms8302
|
4315
|
-
Node: Getting help12094
|
4316
|
-
Node: Commercial Support12557
|
4317
|
-
Node: Downloading and Installing13498
|
4318
|
-
Node: Installing under Windows15863
|
4319
|
-
Node: Bug Reports17267
|
4320
|
-
Node: Contributing18673
|
4321
|
-
Node: Preparation20676
|
4322
|
-
Node: Header21398
|
4323
|
-
Node: Initialization24509
|
4324
|
-
Node: Version Check24706
|
4325
|
-
Ref: stringprep_check_version25245
|
4326
|
-
Node: Building the source26220
|
4327
|
-
Node: Autoconf tests28142
|
4328
|
-
Node: Memory handling under Windows30543
|
4329
|
-
Ref: idn_free31503
|
4330
|
-
Node: Utility Functions32061
|
4331
|
-
Ref: stringprep_unichar_to_utf832733
|
4332
|
-
Ref: stringprep_utf8_to_unichar33165
|
4333
|
-
Ref: stringprep_ucs4_to_utf833555
|
4334
|
-
Ref: stringprep_utf8_to_ucs434440
|
4335
|
-
Ref: stringprep_ucs4_nfkc_normalize35265
|
4336
|
-
Ref: stringprep_utf8_nfkc_normalize35762
|
4337
|
-
Ref: stringprep_locale_charset36933
|
4338
|
-
Ref: stringprep_convert37976
|
4339
|
-
Ref: stringprep_locale_to_utf838545
|
4340
|
-
Ref: stringprep_utf8_to_locale38934
|
4341
|
-
Node: Stringprep Functions39293
|
4342
|
-
Ref: stringprep_4i41220
|
4343
|
-
Ref: stringprep_4zi42869
|
4344
|
-
Ref: stringprep44115
|
4345
|
-
Ref: stringprep_profile45475
|
4346
|
-
Ref: stringprep_strerror46609
|
4347
|
-
Node: Punycode Functions50310
|
4348
|
-
Ref: punycode_encode52079
|
4349
|
-
Ref: punycode_decode54314
|
4350
|
-
Ref: punycode_strerror56483
|
4351
|
-
Node: IDNA Functions57252
|
4352
|
-
Ref: idna_to_ascii_4i59874
|
4353
|
-
Ref: idna_to_unicode_44i61523
|
4354
|
-
Ref: idna_to_ascii_4z63506
|
4355
|
-
Ref: idna_to_ascii_8z64112
|
4356
|
-
Ref: idna_to_ascii_lz64712
|
4357
|
-
Ref: idna_to_unicode_4z4z65459
|
4358
|
-
Ref: idna_to_unicode_8z4z66123
|
4359
|
-
Ref: idna_to_unicode_8z8z66781
|
4360
|
-
Ref: idna_to_unicode_8zlz67433
|
4361
|
-
Ref: idna_to_unicode_lzlz68174
|
4362
|
-
Ref: idna_strerror69002
|
4363
|
-
Node: TLD Functions70626
|
4364
|
-
Ref: tld_check_4t72287
|
4365
|
-
Ref: tld_check_4tz73220
|
4366
|
-
Ref: tld_get_474106
|
4367
|
-
Ref: tld_get_4z74628
|
4368
|
-
Ref: tld_get_z75054
|
4369
|
-
Ref: tld_get_table75571
|
4370
|
-
Ref: tld_default_table76115
|
4371
|
-
Ref: tld_check_476860
|
4372
|
-
Ref: tld_check_4z78161
|
4373
|
-
Ref: tld_check_8z79378
|
4374
|
-
Ref: tld_check_lz80696
|
4375
|
-
Ref: tld_strerror82085
|
4376
|
-
Node: PR29 Functions82911
|
4377
|
-
Ref: pr29_485207
|
4378
|
-
Ref: pr29_4z85848
|
4379
|
-
Ref: pr29_8z86382
|
4380
|
-
Ref: pr29_strerror87055
|
4381
|
-
Node: Examples87778
|
4382
|
-
Node: Example 188231
|
4383
|
-
Node: Example 290810
|
4384
|
-
Node: Example 397429
|
4385
|
-
Node: Example 499971
|
4386
|
-
Node: Example 5102522
|
4387
|
-
Node: Invoking idn106007
|
4388
|
-
Node: Emacs API113480
|
4389
|
-
Node: Java API116298
|
4390
|
-
Node: C# API121470
|
4391
|
-
Node: Acknowledgements121939
|
4392
|
-
Node: History123041
|
4393
|
-
Node: PR29 discussion124704
|
4394
|
-
Node: On Label Separators128574
|
4395
|
-
Ref: On Label Separators-Footnote-1131094
|
4396
|
-
Node: Copying Information131193
|
4397
|
-
Node: GNU Free Documentation License131459
|
4398
|
-
Node: Function and Variable Index156772
|
4399
|
-
Node: Concept Index161758
|
4400
|
-
|
4401
|
-
End Tag Table
|
4402
|
-
|
4403
|
-
|
4404
|
-
Local Variables:
|
4405
|
-
coding: utf-8
|
4406
|
-
End:
|