mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-23 10:29:58 +01:00
7a3a1ef370
* tools/gpgconf.h (gc_component_t): Change type to ... (gc_component_id_t): this. (GC_COMPONENT_ANY): New, so that we can use that in gpgconf-comp.c directly. * tools/gpgconf-comp.c: Major rework. -- The primary reason for this rework is to support the global options. A second reason is to clean up the code and simplify it so that we do not anymore need to maintain a list of options in the components _and_ in gpgconf-comp.c. What we do now is to 1. Read the option tables directly from the components using the new generic --dump-option-table option. This includes the header (group) descriptions. 2. Read the default values from the components as before using --gpgconf-list and update gpgconf's internal tables with that info. 3. Read the options using gpgrt_argparser in the same way as we do this in the components. The changes also do away with the second level notion of backends; they were only used for dirmngr's extra dirmngr_ldapservers.conf file. We intend to remove that file and replace it with a regular option so that it will be similar on how OpenPGP keyservers are specified. The whole thing will currently be slower than before (in particular on Windows) but we can optimize that by keeping a cached version of the option tables and the default values in a per homedir cache file. There is also some work planned to remove most of the data returned by --gpgconf-list. What can also be done is to replace the internal tables, which list the gpgconf maintainable options, by a configuration file so that admins are able to maintain the list of these options. GnuPG-bug-id: 4788 Signed-off-by: Werner Koch <wk@gnupg.org> This is a backport from master (2.3)
132 lines
3.8 KiB
C
132 lines
3.8 KiB
C
/* gpgconf.h - Global definitions for gpgconf
|
|
* Copyright (C) 2003 Free Software Foundation, Inc.
|
|
*
|
|
* This file is part of GnuPG.
|
|
*
|
|
* GnuPG 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 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* GnuPG 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 this program; if not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef GPGCONF_H
|
|
#define GPGCONF_H
|
|
|
|
#include "../common/util.h"
|
|
|
|
/* We keep all global options in the structure OPT. */
|
|
EXTERN_UNLESS_MAIN_MODULE
|
|
struct
|
|
{
|
|
int verbose; /* Verbosity level. */
|
|
int quiet; /* Be extra quiet. */
|
|
int dry_run; /* Don't change any persistent data. */
|
|
int runtime; /* Make changes active at runtime. */
|
|
int null; /* Option -0 active. */
|
|
char *outfile; /* Name of output file. */
|
|
|
|
int component; /* The active component. */
|
|
} opt;
|
|
|
|
|
|
/*-- gpgconf.c --*/
|
|
void gpgconf_write_status (int no, const char *format,
|
|
...) GPGRT_ATTR_PRINTF(2,3);
|
|
void gpgconf_failure (gpg_error_t err) GPGRT_ATTR_NORETURN;
|
|
|
|
/*-- gpgconf-comp.c --*/
|
|
|
|
/* Component system. Each component is a set of options that can be
|
|
* configured at the same time. If you change this, don't forget to
|
|
* update gc_component[] in gpgconf-comp.c. */
|
|
typedef enum
|
|
{
|
|
/* Any component, used as a wildcard arg. */
|
|
GC_COMPONENT_ANY,
|
|
|
|
/* The classic GPG for OpenPGP. */
|
|
GC_COMPONENT_GPG,
|
|
|
|
/* The GPG Agent. */
|
|
GC_COMPONENT_GPG_AGENT,
|
|
|
|
/* The Smardcard Daemon. */
|
|
GC_COMPONENT_SCDAEMON,
|
|
|
|
/* GPG for S/MIME. */
|
|
GC_COMPONENT_GPGSM,
|
|
|
|
/* The LDAP Directory Manager for CRLs. */
|
|
GC_COMPONENT_DIRMNGR,
|
|
|
|
/* The external Pinentry. */
|
|
GC_COMPONENT_PINENTRY,
|
|
|
|
/* The number of components. */
|
|
GC_COMPONENT_NR
|
|
} gc_component_id_t;
|
|
|
|
|
|
/* Initialize the components. */
|
|
void gc_components_init (void);
|
|
|
|
/* Percent-Escape special characters. The string is valid until the
|
|
next invocation of the function. */
|
|
char *gc_percent_escape (const char *src);
|
|
|
|
|
|
void gc_error (int status, int errnum, const char *fmt, ...);
|
|
|
|
/* Launch given component. */
|
|
gpg_error_t gc_component_launch (int component);
|
|
|
|
/* Kill given component. */
|
|
void gc_component_kill (int component);
|
|
|
|
/* Reload given component. */
|
|
void gc_component_reload (int component);
|
|
|
|
/* List all components that are available. */
|
|
void gc_component_list_components (estream_t out);
|
|
|
|
/* List all programs along with their status. */
|
|
void gc_check_programs (estream_t out);
|
|
|
|
/* Find the component with the name NAME. Returns -1 if not
|
|
found. */
|
|
int gc_component_find (const char *name);
|
|
|
|
/* Retrieve the currently active options and their defaults from all
|
|
involved backends for this component. */
|
|
void gc_component_retrieve_options (int component);
|
|
|
|
/* List all options of the component COMPONENT. */
|
|
void gc_component_list_options (int component, estream_t out);
|
|
|
|
/* Read the modifications from IN and apply them. */
|
|
void gc_component_change_options (int component, estream_t in, estream_t out,
|
|
int verbatim);
|
|
|
|
/* Check the options of a single component. Returns 0 if everything
|
|
is OK. */
|
|
int gc_component_check_options (int component, estream_t out,
|
|
const char *conf_file);
|
|
|
|
/* Process global configuration file. */
|
|
int gc_process_gpgconf_conf (const char *fname, int update, int defaults,
|
|
estream_t listfp);
|
|
|
|
/* Apply a profile. */
|
|
gpg_error_t gc_apply_profile (const char *fname);
|
|
|
|
|
|
#endif /*GPGCONF_H*/
|