From e5c5dc9cae56bdea02f7661c1c8a8cacfbe99f1c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 25 Jan 2016 12:50:29 +0100 Subject: move plugin path setup logic to libtalerutil --- src/util/plugin.c | 85 +++++++++++++++++++++++++++++++++++++++ src/util/test_wireformats.c | 97 --------------------------------------------- 2 files changed, 85 insertions(+), 97 deletions(-) create mode 100644 src/util/plugin.c delete mode 100644 src/util/test_wireformats.c (limited to 'src/util') diff --git a/src/util/plugin.c b/src/util/plugin.c new file mode 100644 index 000000000..d76dfa781 --- /dev/null +++ b/src/util/plugin.c @@ -0,0 +1,85 @@ +/* + This file is part of TALER + Copyright (C) 2015 GNUnet e.V. + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, If not, see +*/ +/** + * @file util/plugin.c + * @brief Setup paths so that we can load Taler plugins + * @author Christian Grothoff + * @author Sree Harsha Totakura + */ + +/** + * Libtool search path before we started. + */ +static char *old_dlsearchpath; + + +/** + * Setup libtool paths. + */ +void __attribute__ ((constructor)) +plugin_init () +{ + int err; + const char *opath; + char *path; + char *cpath; + + err = lt_dlinit (); + if (err > 0) + { + FPRINTF (stderr, + _("Initialization of plugin mechanism failed: %s!\n"), + lt_dlerror ()); + return; + } + opath = lt_dlgetsearchpath (); + if (NULL != opath) + old_dlsearchpath = GNUNET_strdup (opath); + path = TALER_OS_installation_get_path (GNUNET_OS_IPK_LIBDIR); + if (NULL != path) + { + if (NULL != opath) + { + GNUNET_asprintf (&cpath, "%s:%s", opath, path); + lt_dlsetsearchpath (cpath); + GNUNET_free (path); + GNUNET_free (cpath); + } + else + { + lt_dlsetsearchpath (path); + GNUNET_free (path); + } + } +} + + +/** + * Shutdown libtool. + */ +void __attribute__ ((destructor)) +plugin_fini () +{ + lt_dlsetsearchpath (old_dlsearchpath); + if (NULL != old_dlsearchpath) + { + GNUNET_free (old_dlsearchpath); + old_dlsearchpath = NULL; + } + lt_dlexit (); +} + +/* end of plugin.c */ diff --git a/src/util/test_wireformats.c b/src/util/test_wireformats.c deleted file mode 100644 index b41abb802..000000000 --- a/src/util/test_wireformats.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - This file is part of TALER - (C) 2014 GNUnet e.V. - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, If not, see -*/ - -/** - * @file util/test_wireformats.c - * @brief Tests for JSON validations - * @author Sree Harsha Totakura - */ - -#include "platform.h" -#include "taler_util.h" -#include "taler_json_lib.h" - -/* Valid SEPA data */ -static const char * const valid_wire_str = - "{ \"type\":\"SEPA\", \ -\"IBAN\":\"DE67830654080004822650\", \ -\"name\":\"GNUnet e.V.\", \ -\"bic\":\"GENODEF1SLR\", \ -\"r\":123456789, \ -\"address\": \"foobar\"}"; - -/* IBAN has wrong country code */ -static const char * const invalid_wire_str = - "{ \"type\":\"SEPA\", \ -\"IBAN\":\"XX67830654080004822650\", \ -\"name\":\"GNUnet e.V.\", \ -\"bic\":\"GENODEF1SLR\", \ -\"r\":123456789, \ -\"address\": \"foobar\"}"; - -/* IBAN has wrong checksum */ -static const char * const invalid_wire_str2 = - "{ \"type\":\"SEPA\", \ -\"IBAN\":\"DE67830654080004822651\", \ -\"name\":\"GNUnet e.V.\", \ -\"bic\":\"GENODEF1SLR\", \ -\"r\":123456789, \ -\"address\": \"foobar\"}"; - -/* Unsupported wireformat type */ -static const char * const unsupported_wire_str = - "{ \"type\":\"unsupported\", \ -\"IBAN\":\"DE67830654080004822650\", \ -\"name\":\"GNUnet e.V.\", \ -\"bic\":\"GENODEF1SLR\", \ -\"r\":123456789, \ -\"address\": \"foobar\"}"; - - -int -main(int argc, - const char *const argv[]) -{ - const char *unsupported[] = { - "unsupported", - NULL - }; - const char *sepa[] = { - "SEPA", - NULL - }; - json_t *wire; - json_error_t error; - int ret; - - GNUNET_log_setup ("test-json-validations", "WARNING", NULL); - (void) memset(&error, 0, sizeof(error)); - GNUNET_assert (NULL != (wire = json_loads (unsupported_wire_str, 0, NULL))); - GNUNET_assert (1 != TALER_json_validate_wireformat (unsupported, wire)); - json_decref (wire); - GNUNET_assert (NULL != (wire = json_loads (invalid_wire_str, 0, NULL))); - GNUNET_assert (1 != TALER_json_validate_wireformat (sepa, wire)); - json_decref (wire); - GNUNET_assert (NULL != (wire = json_loads (invalid_wire_str2, 0, NULL))); - GNUNET_assert (1 != TALER_json_validate_wireformat (sepa, wire)); - json_decref (wire); - GNUNET_assert (NULL != (wire = json_loads (valid_wire_str, 0, &error))); - ret = TALER_json_validate_wireformat (sepa, wire); - json_decref (wire); - if (1 == ret) - return 0; - return 1; -} -- cgit v1.2.3