Release 0.7.1

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABCgAGBQJU6M9kAAoJEAgwLbaiZwQotbwP/iIaonabM2HbgjV1h8ajtCQO
 vV1wgSpYHoRqb/0fIecUzXkEnKWcIbnVs/N8L1ui1Z0D0CliD7V8jzr4KVo2ip5K
 LqMn3oTEB7jV9Z31BAwmzGU8rBwRa7MdHlNLGcUiLb0oSTCrLieyJYAE/mK48YQq
 bWmbVpjnNy49JV9mLML1uxFFwASlX5OtfDDUaE9KsYy3P1SjlscW9KV4ST+1H3Hs
 FQsbt9eQFsLjt3hV03K9K6+yU9j7umCKXp0RqONonY7t6kwNi0HRR/bgdCJUAbHO
 AQRLZsnYTVngLHv+IVo0fF02CgBT+eDI8dppY6CSkOn4DZU8bV2fk46bCpnaNlgj
 Cx1UjQITNbHc2jyxDgnv38jKHzJB69kvtbrmS63HxLyiqE0z2X6cDttqPkwZLfJA
 CVJbCQ8fZUN/3etFYaqX27v95PpIbEsRffqjJ6hfp34gDPp3RprdBvC28tLP7HB/
 +V/+qRBQQwsxXRVb+bGXBQUjBpOIwPJQwTT1QhupwMA847geT+YyQcnIHNhwFXkG
 H7E5TwLvGfQUi8s+iqbsT36Q8SUxxjnw24wJYZsFXg2DdhUnuOA7ZKMxR/E7V4zy
 9TkfRUPGnx+4HwVOCaI9PEUYJ425N3GIPp2+07k3lVD/uT0OhhGyDKpudrPluWCo
 bGvkXzJHjhxMJucmcAvu
 =tu6S
 -----END PGP SIGNATURE-----

Merge tag 'libpsl-0.7.1' into debian

Release 0.7.1
This commit is contained in:
Daniel Kahn Gillmor 2015-07-09 10:06:35 -04:00
commit fe479c6c6e
14 changed files with 805 additions and 69 deletions

View File

@ -11,3 +11,5 @@ Tim Ruehsen (Implementation of libpsl)
Daniel Kahn Gillmor (Discussion, Ideas, Organization, Code)
Daniel Stenberg (Discussion, Ideas)
Darshit Shah (Patching Wget to work with libpsl)
Dagobert Michelsen (Fixed Solaris building)
Christopher Meng (Fedora building)

View File

@ -1,10 +1,11 @@
# got some hints from https://gitorious.org/openismus-playground/examplelib/source
SUBDIRS = po include src tools data docs/libpsl tests
SUBDIRS = po include src tools data $(LIBPSL_DOCS) tests
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
# Enable GTK-Doc during make distcheck
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man
#DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man
## Install the generated pkg-config file (.pc) into the expected location for
## architecture-dependent package configuration information. Occasionally,

11
NEWS
View File

@ -1,5 +1,16 @@
Copyright (C) 2014 Tim Rühsen
21.02.2015 Release V0.7.1
* include configured PSL file into tarball
30.01.2015 Release V0.7.0
* include effective_tld_names.dat of date 29.12.2014
* do not install docs when gtk-doc is not installed
* fix several compatibility issues with Solaris
* fix 'make distcheck' after 'make clean'
* mark API as stable
* use pkg-config to detect libicu
14.11.2014 Release V0.6.2
* revoked commit from 0.6.1 to satisfy Travis-CI

View File

@ -1,6 +1,7 @@
# !/bin/sh -e
if test -z `which autoreconf`; then
AUTORECONF=`which autoreconf 2>/dev/null`
if test $? -ne 0; then
echo "No 'autoreconf' found. You must install the autoconf package."
exit 1
fi
@ -9,15 +10,18 @@ fi
mkdir m4 2>/dev/null
GTKDOCIZE=`which gtkdocize 2>/dev/null`
if test -z $GTKDOCIZE; then
if test $? -ne 0; then
echo "No gtk-doc support found. You can't build the docs."
# rm because gtk-doc.make might be a link to a protected file
rm -f gtk-doc.make 2>/dev/null
echo "EXTRA_DIST =" >gtk-doc.make
echo "CLEANFILES =" >>gtk-doc.make
GTKDOCIZE=""
else
gtkdocize || exit $?
$GTKDOCIZE || exit $?
fi
autoreconf --install --force --symlink || exit $?
$AUTORECONF --install --force --symlink || exit $?
echo
echo "----------------------------------------------------------------"

View File

@ -1,5 +1,5 @@
AC_INIT([libpsl], [0.6.2], [tim.ruehsen@gmx.de], [libpsl], [http://github.com/rockdaboot/libpsl])
AC_INIT([libpsl], [0.7.1], [tim.ruehsen@gmx.de], [libpsl], [http://github.com/rockdaboot/libpsl])
AC_PREREQ([2.59])
AM_INIT_AUTOMAKE([1.10 -Wall no-define foreign])
@ -14,6 +14,9 @@ LT_INIT
AC_CONFIG_MACRO_DIR([m4])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl Check that compiler understands inline
AC_C_INLINE
#
# Gettext
#
@ -28,6 +31,16 @@ GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
],[
AM_CONDITIONAL([ENABLE_GTK_DOC], false)
])
# needed for some older versions of gtk-doc
m4_ifdef([GTK_DOC_USE_LIBTOOL], [], [
AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], false)
])
if test x"$have_gtk_doc" = xyes -a x"$enable_gtk_doc" = xyes; then
docdir_makefile=docs/libpsl/Makefile
docdir_version_xml=docs/libpsl/version.xml
AC_SUBST([LIBPSL_DOCS], [docs/libpsl])
fi
#
# enable creation of man pages
@ -51,6 +64,7 @@ AS_IF([ test "$enable_man" != no ], [
AC_MSG_RESULT([no])
])
PKG_PROG_PKG_CONFIG
# Define these substitions here to keep all version information in one place.
# For information on how to properly maintain the library version information,
@ -63,7 +77,7 @@ AS_IF([ test "$enable_man" != no ], [
# 4. If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0.
# 5. If any interfaces have been added since the last public release, then increment age.
# 6. If any existing interfaces have been removed or changed since the last public release, then set age to 0.
AC_SUBST([LIBPSL_SO_VERSION], [2:3:2])
AC_SUBST([LIBPSL_SO_VERSION], [2:4:2])
AC_SUBST([LIBPSL_VERSION], $VERSION)
# Check for enable/disable builtin PSL data
@ -130,16 +144,22 @@ if test "$enable_runtime" = "libicu" -o "$enable_builtin" = "libicu"; then
# Check for libicu
# using pkg-config won't work on older systems like Ubuntu 12.04 LTS Server Edition 64bit
# using AC_SEARCH_LIBS also don't work since functions have the library version appended
OLDLIBS=$LIBS
LIBS="-licuuc $LIBS"
AC_MSG_CHECKING([for ICU unicode library])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <unicode/ustring.h>]],
[[u_strToUTF8(NULL, 0, NULL, NULL, 0, NULL);]])],
[HAVE_LIBICU=yes; AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no]); AC_MSG_ERROR(You requested libicu but it is not installed.)])
LIBS=$OLDLIBS
PKG_CHECK_MODULES([LIBICU], [icu-uc], [
HAVE_LIBICU=yes
LIBS="$LIBICU_LIBS $LIBS"
CFLAGS="$LIBICU_CFLAGS $CFLAGS"
], [
OLDLIBS=$LIBS
LIBS="-licuuc $LIBS"
AC_MSG_CHECKING([for ICU unicode library])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <unicode/ustring.h>]],
[[u_strToUTF8(NULL, 0, NULL, NULL, 0, NULL);]])],
[HAVE_LIBICU=yes; AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no]); AC_MSG_ERROR(You requested libicu but it is not installed.)])
LIBS=$OLDLIBS
])
fi
if test "$enable_runtime" = "libidn2" -o "$enable_builtin" = "libidn2"; then
@ -163,6 +183,10 @@ if test "x$HAVE_LIBIDN2" = "xyes" -o "x$HAVE_LIBIDN" = "xyes"; then
LIBS=$OLDLIBS
fi
# AM_ICONV sets @LIBICONV@ and @LTLIBICONV@ for use in Makefile.am
# do not use AM_ICONV conditionally
AM_ICONV
AM_CONDITIONAL([WITH_LIBICU], test "x$enable_runtime" = "xlibicu")
AM_CONDITIONAL([WITH_LIBIDN2], test "x$enable_runtime" = "xlibidn2")
AM_CONDITIONAL([WITH_LIBIDN], test "x$enable_runtime" = "xlibidn")
@ -171,6 +195,19 @@ AM_CONDITIONAL([BUILTIN_GENERATOR_LIBIDN2], test "x$enable_builtin" = "xlibidn2"
AM_CONDITIONAL([BUILTIN_GENERATOR_LIBIDN], test "x$enable_builtin" = "xlibidn")
AM_CONDITIONAL([WITH_BUILTIN], test $enable_builtin = yes)
# Solaris has socket in libsocket and inet_ntop in libnsl, but also needs libsocket, so the order is important here
AC_CHECK_LIB([socket], [socket], [NEEDS_SOCKET=yes], [])
if test -n "$NEEDS_SOCKET" ; then
AC_CHECK_LIB([nsl], [inet_ntop], [NEEDS_NSL=yes], [])
fi
if test -n "$NEEDS_SOCKET" && test -n "$NEEDS_NSL" ; then
LIBS="$LIBS -lsocket -lnsl"
elif test -n "$NEEDS_SOCKET" ; then
LIBS="$LIBS -lsocket"
elif test -n "$NEEDS_NSL" ; then
LIBS="$LIBS -lnsl"
fi
# Check for valgrind
ac_enable_valgrind=no
AC_ARG_ENABLE(valgrind-tests,
@ -207,6 +244,7 @@ AC_SUBST(PSL_TESTFILE)
# check for alloca / alloca.h
AC_FUNC_ALLOCA
AC_CHECK_FUNCS([strndup])
# Override the template file name of the generated .pc file, so that there
# is no need to rename the template file when the API version changes.
@ -215,8 +253,8 @@ AC_CONFIG_FILES([Makefile
src/Makefile
tools/Makefile
po/Makefile.in
docs/libpsl/Makefile
docs/libpsl/version.xml
${docdir_makefile}
${docdir_version_xml}
data/Makefile
tests/Makefile
libpsl.pc:libpsl.pc.in])

View File

@ -1,3 +1,3 @@
filesdir = $(datadir)/@PACKAGE@
files_DATA = effective_tld_names.dat test_psl.txt
files_DATA = $(PSL_FILE) test_psl.txt
EXTRA_DIST = $(files_DATA)

File diff suppressed because it is too large Load Diff

View File

@ -113,9 +113,11 @@ if ENABLE_MAN
theMANS += libpsl.3
man_MANS += docs $(theMANS)
%.3:
#.xml.3:
@file=xml/`echo $@|cut -d'.' -f1`.xml; \
# make distcheck -jn randomly breaks
.NOTPARALLEL:
%.3: sgml-build.stamp
@file=xml/`basename $@|cut -d'.' -f1`.xml; \
@XSLTPROC@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $$file
endif

0
docs/libpsl/libpsl.types Normal file
View File

View File

@ -27,10 +27,10 @@ if BUILTIN_GENERATOR_LIBICU
psl2c_LDADD = -licuuc
endif
if BUILTIN_GENERATOR_LIBIDN2
psl2c_LDADD = -lidn2 -lunistring
psl2c_LDADD = @LTLIBICONV@ -lidn2 -lunistring
endif
if BUILTIN_GENERATOR_LIBIDN
psl2c_LDADD = -lidn -lunistring
psl2c_LDADD = @LTLIBICONV@ -lidn -lunistring
endif
# Build rule for suffix.c

View File

@ -93,11 +93,27 @@
/* number of elements within an array */
#define countof(a) (sizeof(a)/sizeof(*(a)))
#ifndef HAVE_STRNDUP
// I found no strndup on my old SUSE 7.3 test system (gcc 2.95)
static char *strndup(const char *s, size_t n)
{
char *dst = malloc(n + 1);
if (dst) {
memcpy(dst, s, n);
dst[n] = 0;
}
return dst;
}
#endif
/**
* SECTION:libpsl
* @short_description: Public Suffix List library functions
* @title: libpsl
* @stability: unstable
* @stability: Stable
* @include: libpsl.h
*
* [Public Suffix List](http://publicsuffix.org/) library functions.
@ -245,10 +261,10 @@ static int _suffix_compare(const _psl_entry_t *s1, const _psl_entry_t *s2)
int n;
if ((n = s2->nlabels - s1->nlabels))
return n; // most labels first
return n; /* most labels first */
if ((n = s1->length - s2->length))
return n; // shorter rules first
return n; /* shorter rules first */
return strcmp(s1->label, s2->label ? s2->label : s2->label_buf);
}
@ -481,9 +497,14 @@ const char *psl_registrable_domain(const psl_ctx_t *psl, const char *domain)
return regdom;
}
static inline int _isspace_ascii(const char c)
{
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
}
static int _str_is_ascii(const char *s)
{
while (*s > 0 && *s < 128) s++;
while (*s && *((unsigned char *)s) < 128) s++;
return !*s;
}
@ -664,14 +685,14 @@ psl_ctx_t *psl_load_fp(FILE *fp)
psl->suffix_exceptions = _vector_alloc(64, _suffix_compare_array);
while ((linep = fgets(buf, sizeof(buf), fp))) {
while (isspace(*linep)) linep++; /* ignore leading whitespace */
while (_isspace_ascii(*linep)) linep++; /* ignore leading whitespace */
if (!*linep) continue; /* skip empty lines */
if (*linep == '/' && linep[1] == '/')
continue; /* skip comments */
/* parse suffix rule */
for (p = linep; *linep && !isspace(*linep);) linep++;
for (p = linep; *linep && !_isspace_ascii(*linep);) linep++;
*linep = 0;
if (*p == '!') {

View File

@ -36,7 +36,6 @@
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <sys/stat.h>
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
@ -92,7 +91,7 @@ static void _print_psl_entries(FILE *fpout, const _psl_vector_t *v, const char *
#if !defined(WITH_LIBICU) && !defined(WITH_IDN2)
static int _str_needs_encoding(const char *s)
{
while (*s > 0) s++;
while (*s && *((unsigned char *)s) < 128) s++;
return !!*s;
}

View File

@ -46,6 +46,11 @@ static int
ok,
failed;
static inline int _isspace_ascii(const char c)
{
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
}
static void test_psl(void)
{
FILE *fp;
@ -59,14 +64,14 @@ static void test_psl(void)
if ((fp = fopen(PSL_FILE, "r"))) {
while ((linep = fgets(buf, sizeof(buf), fp))) {
while (isspace(*linep)) linep++; /* ignore leading whitespace */
while (_isspace_ascii(*linep)) linep++; /* ignore leading whitespace */
if (!*linep) continue; /* skip empty lines */
if (*linep == '/' && linep[1] == '/')
continue; /* skip comments */
/* parse suffix rule */
for (p = linep; *linep && !isspace(*linep);) linep++;
for (p = linep; *linep && !_isspace_ascii(*linep);) linep++;
*linep = 0;
if (*p == '!') { /* an exception to a wildcard, e.g. !www.ck (wildcard is *.ck) */

View File

@ -35,7 +35,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
#endif