From e92a8ab021672b19e5cd397fa555fcc8a3401e8b Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 10 Sep 2015 18:11:58 +0200 Subject: g10: Fix make distcheck problem. * g10/test.c: Include string.h. (prepend_srcdir): New. Taken from Libgcrypt. (test_free): New. * g10/t-keydb.c (do_test): Malloc the filename. * g10/Makefile.am (AM_CPPFLAGS): Remove -DSOURCE_DIR (EXTRA_DIST): Add t-keydb-keyring.kbx. -- Using SOURCE_DIR should in general work but we have seen problems when doing this in Libgcrypt. Using the srcdir variable gives us anyway more flexibility and aligns with the way we do it in tests/openpgp. Signed-off-by: Werner Koch --- g10/Makefile.am | 4 ++-- g10/t-keydb.c | 5 ++++- g10/test.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/g10/Makefile.am b/g10/Makefile.am index 421870c5e..2fd52b3f7 100644 --- a/g10/Makefile.am +++ b/g10/Makefile.am @@ -19,9 +19,9 @@ ## Process this file with automake to produce Makefile.in EXTRA_DIST = options.skel distsigkey.gpg ChangeLog-2011 gpg-w32info.rc \ - gpg.w32-manifest.in test.c + gpg.w32-manifest.in test.c t-keydb-keyring.kbx -AM_CPPFLAGS = -I$(top_srcdir)/common -DSOURCE_DIR="\"$(srcdir)\"" +AM_CPPFLAGS = -I$(top_srcdir)/common include $(top_srcdir)/am/cmacros.am diff --git a/g10/t-keydb.c b/g10/t-keydb.c index 634cb05a7..17a76111d 100644 --- a/g10/t-keydb.c +++ b/g10/t-keydb.c @@ -30,11 +30,14 @@ do_test (int argc, char *argv[]) KBNODE kb1, kb2; char *uid1; char *uid2; + char *fname; (void) argc; (void) argv; - rc = keydb_add_resource (SOURCE_DIR "/t-keydb-keyring.kbx", 0); + fname = prepend_srcdir ("t-keydb-keyring.kbx"); + rc = keydb_add_resource (fname, 0); + test_free (fname); if (rc) ABORT ("Failed to open keyring."); diff --git a/g10/test.c b/g10/test.c index e9e6b2342..59a015ca6 100644 --- a/g10/test.c +++ b/g10/test.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "gpg.h" @@ -138,6 +139,35 @@ exit_tests (int force) } } + +/* Prepend FNAME with the srcdir environment variable's value and + return a malloced filename. Caller must release the returned + string using test_free. */ +char * +prepend_srcdir (const char *fname) +{ + static const char *srcdir; + char *result; + + if (!srcdir && !(srcdir = getenv ("srcdir"))) + srcdir = "."; + + result = malloc (strlen (srcdir) + 1 + strlen (fname) + 1); + strcpy (result, srcdir); + strcat (result, "/"); + strcat (result, fname); + return result; +} + + +void +test_free (void *a) +{ + if (a) + free (a); +} + + int main (int argc, char *argv[]) { -- cgit v1.2.3