Blame tests/t-engine-info.c

Packit d7e8d0
/* t-engine-info.c - Regression test for gpgme_get_engine_info.
Packit Service 30b792
 * Copyright (C) 2003, 2004, 2007 g10 Code GmbH
Packit Service 30b792
 *
Packit Service 30b792
 * This file is part of GPGME.
Packit Service 30b792
 *
Packit Service 30b792
 * GPGME is free software; you can redistribute it and/or modify it
Packit Service 30b792
 * under the terms of the GNU Lesser General Public License as
Packit Service 30b792
 * published by the Free Software Foundation; either version 2.1 of
Packit Service 30b792
 * the License, or (at your option) any later version.
Packit Service 30b792
 *
Packit Service 30b792
 * GPGME is distributed in the hope that it will be useful, but
Packit Service 30b792
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 30b792
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 30b792
 * Lesser General Public License for more details.
Packit Service 30b792
 *
Packit Service 30b792
 * You should have received a copy of the GNU Lesser General Public
Packit Service 30b792
 * License along with this program; if not, see <https://gnu.org/licenses/>.
Packit Service 30b792
 * SPDX-License-Identifier: LGPL-2.1-or-later
Packit Service 30b792
 */
Packit d7e8d0
Packit d7e8d0
#ifdef HAVE_CONFIG_H
Packit d7e8d0
#include <config.h>
Packit d7e8d0
#endif
Packit d7e8d0
Packit d7e8d0
#include <stdlib.h>
Packit d7e8d0
#include <stdio.h>
Packit d7e8d0
#include <string.h>
Packit d7e8d0
Packit d7e8d0
#include <gpgme.h>
Packit d7e8d0
Packit d7e8d0
#define PGM "t-engine-info"
Packit d7e8d0
Packit d7e8d0
static int verbose;
Packit d7e8d0
Packit d7e8d0
Packit d7e8d0
Packit d7e8d0

Packit d7e8d0
#define fail_if_err(err)					\
Packit d7e8d0
  do								\
Packit d7e8d0
    {								\
Packit d7e8d0
      if (err)							\
Packit d7e8d0
        {							\
Packit d7e8d0
          fprintf (stderr, "%s:%d: gpgme_error_t %s\n",		\
Packit d7e8d0
                   __FILE__, __LINE__, gpgme_strerror (err));   \
Packit d7e8d0
          exit (1);						\
Packit d7e8d0
        }							\
Packit d7e8d0
    }								\
Packit d7e8d0
  while (0)
Packit d7e8d0
Packit d7e8d0
Packit d7e8d0
int
Packit d7e8d0
main (int argc, char **argv )
Packit d7e8d0
{
Packit d7e8d0
  int last_argc = -1;
Packit d7e8d0
  gpgme_engine_info_t info;
Packit d7e8d0
  gpgme_error_t err;
Packit d7e8d0
Packit d7e8d0
  if (argc)
Packit d7e8d0
    { argc--; argv++; }
Packit d7e8d0
Packit d7e8d0
  while (argc && last_argc != argc )
Packit d7e8d0
    {
Packit d7e8d0
      last_argc = argc;
Packit d7e8d0
      if (!strcmp (*argv, "--"))
Packit d7e8d0
        {
Packit d7e8d0
          argc--; argv++;
Packit d7e8d0
          break;
Packit d7e8d0
        }
Packit d7e8d0
      else if (!strcmp (*argv, "--help"))
Packit d7e8d0
        {
Packit d7e8d0
          fputs ("usage: " PGM " [options]\n"
Packit d7e8d0
                 "Options:\n"
Packit d7e8d0
                 "  --set-global-flag KEY VALUE\n",
Packit d7e8d0
                 stdout);
Packit d7e8d0
          exit (0);
Packit d7e8d0
        }
Packit d7e8d0
      else if (!strcmp (*argv, "--verbose"))
Packit d7e8d0
        {
Packit d7e8d0
          verbose++;
Packit d7e8d0
          argc--; argv++;
Packit d7e8d0
        }
Packit d7e8d0
      else if (!strcmp (*argv, "--set-global-flag"))
Packit d7e8d0
        {
Packit d7e8d0
          argc--; argv++;
Packit d7e8d0
          if (argc < 2)
Packit d7e8d0
            {
Packit d7e8d0
              fprintf (stderr, PGM ": not enough arguments for option\n");
Packit d7e8d0
              exit (1);
Packit d7e8d0
            }
Packit d7e8d0
          if (gpgme_set_global_flag (argv[0], argv[1]))
Packit d7e8d0
            {
Packit d7e8d0
              fprintf (stderr, PGM ": gpgme_set_global_flag failed\n");
Packit d7e8d0
              exit (1);
Packit d7e8d0
            }
Packit d7e8d0
          argc--; argv++;
Packit d7e8d0
          argc--; argv++;
Packit d7e8d0
        }
Packit d7e8d0
      else if (!strncmp (*argv, "--", 2))
Packit d7e8d0
        {
Packit d7e8d0
          fprintf (stderr, PGM ": unknown option '%s'\n", *argv);
Packit d7e8d0
          exit (1);
Packit d7e8d0
        }
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
  if (argc)
Packit d7e8d0
    {
Packit d7e8d0
      fprintf (stderr, PGM ": unexpected arguments\n");
Packit d7e8d0
      exit (1);
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
  gpgme_check_version (NULL);
Packit d7e8d0
Packit d7e8d0
  {
Packit d7e8d0
    const char *keys[] = {"homedir",
Packit d7e8d0
                          "sysconfdir",
Packit d7e8d0
                          "bindir",
Packit d7e8d0
                          "libexecdir",
Packit d7e8d0
                          "libdir",
Packit d7e8d0
                          "datadir",
Packit d7e8d0
                          "localedir",
Packit d7e8d0
                          "agent-socket",
Packit d7e8d0
                          "agent-ssh-socket",
Packit d7e8d0
                          "dirmngr-socket",
Packit d7e8d0
                          "uiserver-socket",
Packit d7e8d0
                          "gpgconf-name",
Packit d7e8d0
                          "gpg-name",
Packit d7e8d0
                          "gpgsm-name",
Packit d7e8d0
                          "g13-name",
Packit d7e8d0
                          "gpg-wks-client-name",
Packit d7e8d0
                          NULL };
Packit d7e8d0
    const char *s;
Packit d7e8d0
    int i;
Packit d7e8d0
Packit d7e8d0
    for (i=0; keys[i]; i++)
Packit d7e8d0
      if ((s = gpgme_get_dirinfo (keys[i])))
Packit d7e8d0
        fprintf (stderr, "dirinfo: %s='%s'\n", keys[i], s);
Packit d7e8d0
  }
Packit d7e8d0
Packit d7e8d0
  err = gpgme_get_engine_info (&info;;
Packit d7e8d0
  fail_if_err (err);
Packit d7e8d0
Packit d7e8d0
  for (; info; info = info->next)
Packit d7e8d0
    fprintf (stdout, "protocol=%d engine='%s' v='%s' (min='%s') home='%s'\n",
Packit d7e8d0
             info->protocol, info->file_name, info->version, info->req_version,
Packit d7e8d0
             info->home_dir? info->home_dir : "[default]");
Packit d7e8d0
Packit d7e8d0
  return 0;
Packit d7e8d0
}