summaryrefslogtreecommitdiffstats
path: root/tools/gpgconf.h
blob: 83aee9a093f9cd49b7832c335d346730c7da19e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* 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,

    /* GPG for S/MIME.  */
    GC_COMPONENT_GPGSM,

    /* The GPG Agent.  */
    GC_COMPONENT_GPG_AGENT,

    /* The Smardcard Daemon.  */
    GC_COMPONENT_SCDAEMON,

    /* 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*/