diff --git a/Makefile.am b/Makefile.am index 073e4b3..1523ed7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ # got some hints from https://gitorious.org/openismus-playground/examplelib/source -SUBDIRS = po include src data docs/libpsl tests +SUBDIRS = po include src tools data docs/libpsl tests ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} # Enable GTK-Doc during make distcheck diff --git a/configure.ac b/configure.ac index f10d2d8..ffc5bbd 100644 --- a/configure.ac +++ b/configure.ac @@ -94,6 +94,7 @@ fi AC_CONFIG_FILES([Makefile include/Makefile src/Makefile + tools/Makefile po/Makefile.in docs/libpsl/Makefile data/Makefile diff --git a/tools/.deps/psl.Po b/tools/.deps/psl.Po new file mode 100644 index 0000000..367480e --- /dev/null +++ b/tools/.deps/psl.Po @@ -0,0 +1,126 @@ +psl.o: psl.c /usr/include/stdc-predef.h ../config.h /usr/include/stdlib.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h ../include/libpsl.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdlib.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +../include/libpsl.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/bits/timex.h: diff --git a/tools/Makefile.am b/tools/Makefile.am new file mode 100644 index 0000000..397a6de --- /dev/null +++ b/tools/Makefile.am @@ -0,0 +1,5 @@ +bin_PROGRAMS = psl + +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_LDFLAGS = -static +LDADD = ../src/libpsl-@LIBPSL_API_VERSION@.la diff --git a/tools/psl b/tools/psl new file mode 100755 index 0000000..18f12f2 Binary files /dev/null and b/tools/psl differ diff --git a/tools/psl.c b/tools/psl.c new file mode 100644 index 0000000..ff57435 --- /dev/null +++ b/tools/psl.c @@ -0,0 +1,98 @@ +/* + * Copyright(c) 2014 Tim Ruehsen + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * This file is part of libpsl. + * + * Using the libpsl functions via command line + * + * Changelog + * 11.04.2014 Tim Ruehsen created + * + */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +static void usage(int err) +{ + fprintf(stderr, "\n"); + fprintf(stderr, "Usage: psl [options]\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Options:\n"); + fprintf(stderr, " --is-public check if domains are public suffixes or not\n"); + fprintf(stderr, " --print-unreg-domain print the longest publix suffix part\n"); + fprintf(stderr, " --print-reg-domain print the shortest private suffix part\n"); + fprintf(stderr, "\n"); + + exit(err); +} + +int main(int argc, const char *const *argv) +{ + int mode = 1; + const char *const *arg; + const psl_ctx_t *psl = psl_builtin(); + + if (!psl) { + fprintf(stderr, "No PSL builtin data available\n"); + exit(2); + } + + for (arg = argv + 1; arg < argv + argc; arg++) { + if (!strncmp(*arg, "--", 2)) { + if (!strcmp(*arg, "--is-public")) + mode = 1; + else if (!strcmp(*arg, "--print-unreg-domain")) + mode = 2; + else if (!strcmp(*arg, "--print-reg-domain")) + mode = 3; + else if (!strcmp(*arg, "--")) { + arg++; + break; + } + else { + fprintf(stderr, "Unknown option '%s'\n", *arg); + usage(1); + } + } else + break; + } + + if (mode == 1) { + for (; arg < argv + argc; arg++) + printf("%s: %d\n", *arg, psl_is_public(psl, *arg)); + } + else if (mode == 2) { + for (; arg < argv + argc; arg++) + printf("%s: %s\n", *arg, psl_unregistrable_domain(psl, *arg)); + } + else if (mode == 3) { + for (; arg < argv + argc; arg++) + printf("%s: %s\n", *arg, psl_registrable_domain(psl, *arg)); + } + + return 0; +} diff --git a/tools/psl.o b/tools/psl.o new file mode 100644 index 0000000..c17f25c Binary files /dev/null and b/tools/psl.o differ