diff options
| author | Werner Koch <[email protected]> | 2016-11-03 15:29:45 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2016-11-03 16:32:30 +0000 | 
| commit | aad94cb7c313d4501bed748f48830cbb93c67e20 (patch) | |
| tree | 86fe8e503361c4f1b48a0acbfbdc8dfb8e622c64 /tests | |
| parent | qt: Change license of export / version header (diff) | |
| download | gpgme-aad94cb7c313d4501bed748f48830cbb93c67e20.tar.gz gpgme-aad94cb7c313d4501bed748f48830cbb93c67e20.zip | |
core: Add gpgme_op_query_swdb and helper.
* src/gpgme.h.in (gpgme_query_swdb_result_t): New.
(gpgme_op_query_swdb): New.
(gpgme_op_query_swdb_result): New.
* src/libgpgme.vers, src/gpgme.def: Add the two new functions.
* src/queryswdb.c: New.
* src/Makefile.am (main_sources): Add new file.
* src/context.h (OPDATA_QUERY_SWDB): New.
* src/engine-backend.h (struct engine_ops): Add field 'query_swdb'.
Adjust all initializer.
* src/engine.c (_gpgme_engine_op_query_swdb): New.
* src/engine-gpgconf.c (parse_swdb_line): New.
(gpgconf_query_swdb): New.
(_gpgme_engine_ops_gpgconf): Register that function.
* src/util.h (GPG_ERR_TOO_OLD): Define for older libgpg-error.
(GPG_ERR_ENGINE_TOO_OLD): Ditto.
* tests/run-swdb.c: New.
* tests/Makefile.am (noinst_PROGRAMS): Add new debug tool.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
| -rw-r--r-- | tests/Makefile.am | 2 | ||||
| -rw-r--r-- | tests/run-swdb.c | 151 | 
2 files changed, 152 insertions, 1 deletions
| diff --git a/tests/Makefile.am b/tests/Makefile.am index c71914f3..e8c7c564 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -33,7 +33,7 @@ noinst_HEADERS = run-support.h  noinst_PROGRAMS = $(TESTS) run-keylist run-export run-import run-sign \  		  run-verify run-encrypt run-identify run-decrypt run-genkey \ -		  run-keysign run-tofu +		  run-keysign run-tofu run-swdb  if RUN_GPG_TESTS diff --git a/tests/run-swdb.c b/tests/run-swdb.c new file mode 100644 index 00000000..91ed22f3 --- /dev/null +++ b/tests/run-swdb.c @@ -0,0 +1,151 @@ +/* run-swdb.c  - Test tool for SWDB function + * Copyright (C) 2016 g10 Code GmbH + * + * This file is part of GPGME. + * + * GPGME is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * GPGME 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +/* We need to include config.h so that we know whether we are building +   with large file system (LFS) support. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <assert.h> + +#include <gpgme.h> + +#define PGM "run-swdb" + +#include "run-support.h" + + +static int verbose; + + +static const char * +isotimestr (unsigned long value) +{ +  time_t t; +  static char buffer[25+5]; +  struct tm *tp; + +  if (!value) +    return "none"; +  t = value; + +  tp = gmtime (&t); +  snprintf (buffer, sizeof buffer, "%04d-%02d-%02d %02d:%02d:%02d", +            1900+tp->tm_year, tp->tm_mon+1, tp->tm_mday, +            tp->tm_hour, tp->tm_min, tp->tm_sec); +  return buffer; +} + + +static int +show_usage (int ex) +{ +  fputs ("usage: " PGM " [options] NAME [VERSION]\n\n" +         "Options:\n" +         "  --verbose        run in verbose mode\n" +         "  --status         print status lines from the backend\n" +         , stderr); +  exit (ex); +} + + +int +main (int argc, char **argv) +{ +  int last_argc = -1; +  gpgme_error_t err; +  gpgme_ctx_t ctx; +  gpgme_protocol_t protocol = GPGME_PROTOCOL_GPGCONF; +  const char *name; +  const char *iversion; +  gpgme_query_swdb_result_t result; + +  if (argc) +    { argc--; argv++; } + +  while (argc && last_argc != argc ) +    { +      last_argc = argc; +      if (!strcmp (*argv, "--")) +        { +          argc--; argv++; +          break; +        } +      else if (!strcmp (*argv, "--help")) +        show_usage (0); +      else if (!strcmp (*argv, "--verbose")) +        { +          verbose = 1; +          argc--; argv++; +        } +      else if (!strncmp (*argv, "--", 2)) +        show_usage (1); +    } + +  if (argc < 1 || argc > 2) +    show_usage (1); +  name = argv[0]; +  iversion = argc > 1? argv[1] : NULL; + +  init_gpgme (protocol); + +  err = gpgme_new (&ctx); +  fail_if_err (err); +  gpgme_set_protocol (ctx, protocol); + +  err = gpgme_op_query_swdb (ctx, name, iversion, 0); +  if (err) +    { +      fprintf (stderr, PGM ": error querying swdb: %s\n", gpg_strerror (err)); +      exit (1); +    } + +  result = gpgme_op_query_swdb_result (ctx); +  if (!result) +    { +      fprintf (stderr, PGM ": error querying swdb: %s\n", "no result"); +      exit (1); +    } + +  printf ("package ...: %s\n" +          "iversion ..: %s\n" +          "version ...: %s\n", +          nonnull (result->name), +          nonnull (result->iversion), +          nonnull (result->version)); +  printf ("reldate ...: %s\n", isotimestr (result->reldate)); +  printf ("created ...: %s\n", isotimestr (result->created)); +  printf ("retrieved .: %s\n", isotimestr (result->retrieved)); +  printf ("flags .....:%s%s%s%s%s%s%s\n", +          result->warning? " warning" : "", +          result->update?  " update"  : "", +          result->urgent?  " urgent"  : "", +          result->unknown? " unknown" : "", +          result->tooold?  " tooold"  : "", +          result->noinfo?  " noinfo"  : "", +          result->error?   " error"   : "" ); + + +  gpgme_release (ctx); +  return 0; +} | 
