mirror of https://github.com/getdnsapi/getdns.git
Added getdns_convert_ulabel_to_alabel and getdns_convert_alabel_to_ulabel; introduced dependency on libidn11
This commit is contained in:
parent
3e0411f8f8
commit
4065396935
|
@ -29,6 +29,8 @@ found_all_libs=1
|
||||||
AC_MSG_NOTICE([Checking for dependencies libevent, ldns])
|
AC_MSG_NOTICE([Checking for dependencies libevent, ldns])
|
||||||
AC_CHECK_LIB([event_core], [event_base_new], [], [found_all_libs=0])
|
AC_CHECK_LIB([event_core], [event_base_new], [], [found_all_libs=0])
|
||||||
AC_CHECK_LIB([ldns], [ldns_dname_new_frm_str], [], [found_all_libs=0])
|
AC_CHECK_LIB([ldns], [ldns_dname_new_frm_str], [], [found_all_libs=0])
|
||||||
|
AC_CHECK_LIB([idn], [idna_to_ascii_8z], [], [found_all_libs=0])
|
||||||
|
|
||||||
if test $found_all_libs == 0
|
if test $found_all_libs == 0
|
||||||
then
|
then
|
||||||
AC_MSG_ERROR([One more dependencies is missing])
|
AC_MSG_ERROR([One more dependencies is missing])
|
||||||
|
|
|
@ -16,7 +16,7 @@ VPATH = @srcdir@
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
CFLAGS=@CFLAGS@ -Wall -g -fPIC -I$(srcdir)/ -I/usr/local/include -std=c99
|
CFLAGS=@CFLAGS@ -Wall -g -fPIC -I$(srcdir)/ -I/usr/local/include -std=c99
|
||||||
LDFLAGS=@LDFLAGS@ -levent_core -lldns -lunbound
|
LDFLAGS=@LDFLAGS@ -levent_core -lldns -lunbound -lidn
|
||||||
# PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous
|
# PROGRAMS=example-simple-answers example-tree example-all-functions example-synchronous
|
||||||
|
|
||||||
.SUFFIXES: .c .o .a .lo .h
|
.SUFFIXES: .c .o .a .lo .h
|
||||||
|
|
|
@ -33,6 +33,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <util-internal.h>
|
#include <util-internal.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <stringprep.h>
|
||||||
|
#include <idna.h>
|
||||||
|
|
||||||
/* stuff to make it compile pedantically */
|
/* stuff to make it compile pedantically */
|
||||||
#define UNUSED_PARAM(x) ((void)(x))
|
#define UNUSED_PARAM(x) ((void)(x))
|
||||||
|
@ -51,20 +54,60 @@ getdns_convert_fqdn_to_dns_name(char *fqdn_as_string)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------- getdns_convert_alabel_to_ulabel */
|
||||||
|
/**
|
||||||
|
* Convert UTF-8 string into an ACE-encoded domain
|
||||||
|
* It is the application programmer's responsibility to free()
|
||||||
|
* the returned buffer after use
|
||||||
|
*
|
||||||
|
* @param ulabel the UTF-8-encoded domain name to convert
|
||||||
|
* @return pointer to ACE-encoded string
|
||||||
|
* @return NULL if conversion fails
|
||||||
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
getdns_convert_ulabel_to_alabel(char *ulabel)
|
getdns_convert_ulabel_to_alabel(char *ulabel)
|
||||||
{
|
{
|
||||||
UNUSED_PARAM(ulabel);
|
int ret;
|
||||||
return NULL;
|
char *buf;
|
||||||
|
char *prepped;
|
||||||
|
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
if ((prepped = stringprep_locale_to_utf8(ulabel)) == 0)
|
||||||
|
return 0;
|
||||||
|
if ((ret = stringprep(prepped, BUFSIZ, 0, stringprep_nameprep)) != STRINGPREP_OK)
|
||||||
|
return 0;
|
||||||
|
if ((ret = idna_to_ascii_8z(prepped, &buf, 0)) != IDNA_SUCCESS) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------- getdns_convert_alabel_to_ulabel */
|
||||||
|
/**
|
||||||
|
* Convert ACE-encoded domain name into a UTF-8 string.
|
||||||
|
* It is the application programmer's responsibility to free()
|
||||||
|
* the returned buffer after use
|
||||||
|
*
|
||||||
|
* @param alabel the ACE-encoded domain name to convert
|
||||||
|
* @return pointer to UTF-8 string
|
||||||
|
* @return NULL if conversion fails
|
||||||
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
getdns_convert_alabel_to_ulabel(char *alabel)
|
getdns_convert_alabel_to_ulabel(char *alabel)
|
||||||
{
|
{
|
||||||
UNUSED_PARAM(alabel);
|
int ret; /* just in case we might want to use it someday */
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
if ((ret = idna_to_unicode_8z8z(alabel, &buf, 0)) != IDNA_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
getdns_display_ip_address(struct getdns_bindata
|
getdns_display_ip_address(struct getdns_bindata
|
||||||
*bindata_of_ipv4_or_ipv6_address)
|
*bindata_of_ipv4_or_ipv6_address)
|
||||||
|
|
Loading…
Reference in New Issue