Merge pull request #1 from dkg/master
minor source and edge case cleanup
This commit is contained in:
commit
6569b1c948
|
@ -0,0 +1,9 @@
|
||||||
|
;; emacs local configuration settings for libpsl source
|
||||||
|
;; surmised by dkg on 2014-03-21 14:35:49-0400
|
||||||
|
|
||||||
|
((c-mode
|
||||||
|
(indent-tabs-mode . t)
|
||||||
|
(tab-width . 4)
|
||||||
|
(c-basic-offset . 4)
|
||||||
|
(c-file-style . "linux"))
|
||||||
|
)
|
|
@ -0,0 +1,57 @@
|
||||||
|
*~
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache/
|
||||||
|
compile
|
||||||
|
config.guess
|
||||||
|
config.h
|
||||||
|
config.h.in
|
||||||
|
config.log
|
||||||
|
config.rpath
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
data/Makefile
|
||||||
|
data/Makefile.in
|
||||||
|
depcomp
|
||||||
|
include/Makefile
|
||||||
|
include/Makefile.in
|
||||||
|
install-sh
|
||||||
|
libpsl-*.pc
|
||||||
|
libtool
|
||||||
|
ltmain.sh
|
||||||
|
m4/
|
||||||
|
missing
|
||||||
|
po/Makefile
|
||||||
|
po/Makefile.in
|
||||||
|
po/Makefile.in.in
|
||||||
|
po/Makevars.template
|
||||||
|
po/POTFILES
|
||||||
|
po/Rules-quot
|
||||||
|
po/boldquot.sed
|
||||||
|
po/en@boldquot.header
|
||||||
|
po/en@quot.header
|
||||||
|
po/insert-header.sin
|
||||||
|
po/psl.pot
|
||||||
|
po/quot.sed
|
||||||
|
po/remove-potcdate.sin
|
||||||
|
po/remove-potcdate.sed
|
||||||
|
po/stamp-po
|
||||||
|
src/.deps/
|
||||||
|
src/.libs/
|
||||||
|
src/Makefile
|
||||||
|
src/Makefile.in
|
||||||
|
src/libpsl-*.la
|
||||||
|
src/libpsl_*_la-psl.lo
|
||||||
|
stamp-h1
|
||||||
|
test-driver
|
||||||
|
tests/.deps/
|
||||||
|
tests/Makefile
|
||||||
|
tests/Makefile.in
|
||||||
|
tests/test-is-tld
|
||||||
|
tests/test-is-tld.log
|
||||||
|
tests/test-is-tld.o
|
||||||
|
tests/test-is-tld.trs
|
||||||
|
tests/test-suite.log
|
||||||
|
psl-*.tar.gz
|
|
@ -55,6 +55,14 @@ psl_ctx_t *
|
||||||
int
|
int
|
||||||
psl_is_tld(const psl_ctx_t *psl, const char *domain);
|
psl_is_tld(const psl_ctx_t *psl, const char *domain);
|
||||||
|
|
||||||
|
/* does not include exceptions */
|
||||||
|
int
|
||||||
|
psl_suffix_count(const psl_ctx_t *psl);
|
||||||
|
/* just counts exceptions */
|
||||||
|
int
|
||||||
|
psl_suffix_exception_count(const psl_ctx_t *psl);
|
||||||
|
|
||||||
|
|
||||||
PSL_END_DECLS
|
PSL_END_DECLS
|
||||||
|
|
||||||
#endif /* _LIBPSL_LIBPSL_H */
|
#endif /* _LIBPSL_LIBPSL_H */
|
||||||
|
|
25
src/psl.c
25
src/psl.c
|
@ -275,13 +275,13 @@ psl_ctx_t *psl_load_file(const char *fname)
|
||||||
if (!(psl = calloc(1, sizeof(psl_ctx_t))))
|
if (!(psl = calloc(1, sizeof(psl_ctx_t))))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if ((fp = fopen(fname, "r"))) {
|
||||||
// as of 02.11.2012, the list at http://publicsuffix.org/list/ contains ~6000 rules and 40 exceptions.
|
// as of 02.11.2012, the list at http://publicsuffix.org/list/ contains ~6000 rules and 40 exceptions.
|
||||||
// as of 19.02.2014, the list at http://publicsuffix.org/list/ contains ~6500 rules and 19 exceptions.
|
// as of 19.02.2014, the list at http://publicsuffix.org/list/ contains ~6500 rules and 19 exceptions.
|
||||||
psl->suffixes = _vector_alloc(8*1024, _suffix_compare);
|
psl->suffixes = _vector_alloc(8*1024, _suffix_compare);
|
||||||
psl->suffix_exceptions = _vector_alloc(64, _suffix_compare);
|
psl->suffix_exceptions = _vector_alloc(64, _suffix_compare);
|
||||||
|
|
||||||
if ((fp = fopen(fname, "r"))) {
|
while ((linep = fgets(buf, sizeof(buf), fp))) {
|
||||||
while ((linep = fgets(&buf, sizeof(buf), fp))) {
|
|
||||||
while (isspace(*linep)) linep++; // ignore leading whitespace
|
while (isspace(*linep)) linep++; // ignore leading whitespace
|
||||||
if (!*linep) continue; // skip empty lines
|
if (!*linep) continue; // skip empty lines
|
||||||
|
|
||||||
|
@ -312,14 +312,27 @@ psl_ctx_t *psl_load_file(const char *fname)
|
||||||
_vector_sort(psl->suffix_exceptions);
|
_vector_sort(psl->suffix_exceptions);
|
||||||
_vector_sort(psl->suffixes);
|
_vector_sort(psl->suffixes);
|
||||||
|
|
||||||
printf("loaded %d (%d/%d) suffixes\n", nsuffixes, psl->suffixes->cur, psl->suffix_exceptions->cur);
|
} else {
|
||||||
|
free(psl);
|
||||||
} else
|
return NULL;
|
||||||
fprintf(stderr, _("Failed to open PSL file '%s'\n"), fname);
|
}
|
||||||
|
|
||||||
return psl;
|
return psl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* does not include exceptions */
|
||||||
|
int psl_suffix_count(const psl_ctx_t *psl)
|
||||||
|
{
|
||||||
|
return psl->suffixes->cur;
|
||||||
|
}
|
||||||
|
/* just counts exceptions */
|
||||||
|
int psl_suffix_exception_count(const psl_ctx_t *psl)
|
||||||
|
{
|
||||||
|
return psl->suffix_exceptions->cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void psl_free(psl_ctx_t **psl)
|
void psl_free(psl_ctx_t **psl)
|
||||||
{
|
{
|
||||||
if (psl && *psl) {
|
if (psl && *psl) {
|
||||||
|
|
|
@ -64,6 +64,9 @@ static void test_psl(void)
|
||||||
|
|
||||||
psl = psl_load_file(DATADIR "/effective_tld_names.dat");
|
psl = psl_load_file(DATADIR "/effective_tld_names.dat");
|
||||||
|
|
||||||
|
printf("loaded %d suffixes and %d exceptions\n", psl_suffix_count(psl), psl_suffix_exception_count(psl));
|
||||||
|
|
||||||
|
|
||||||
for (it = 0; it < countof(test_data); it++) {
|
for (it = 0; it < countof(test_data); it++) {
|
||||||
const struct test_data *t = &test_data[it];
|
const struct test_data *t = &test_data[it];
|
||||||
int result = psl_is_tld(psl, t->domain);
|
int result = psl_is_tld(psl, t->domain);
|
||||||
|
|
Loading…
Reference in New Issue