Make gpgconf --list-components also print the name of the executable program.

This commit is contained in:
Werner Koch 2007-08-31 08:24:52 +00:00
parent 8464627bf4
commit 273433d70d
3 changed files with 50 additions and 13 deletions

View File

@ -421,7 +421,7 @@ tabulator sheet per component.
The command argument @code{--list-components} lists all available
components, one per line. The format of each line is:
@code{@var{name}:@var{description}}
@code{@var{name}:@var{description}:@var{pgmname}:}
@table @var
@item name
@ -435,16 +435,21 @@ The @emph{string} in this field contains a human-readable description
of the component. It can be displayed to the user of the GUI for
informational purposes. It is @emph{percent-escaped} and
@emph{localized}.
@item pgmname
The @emph{string} in this field contains the absolute name of the
program's file. It can be used to unambiguously invoke that program.
It is @emph{percent-escaped}.
@end table
Example:
@example
$ gpgconf --list-components
gpg:GPG for OpenPGP
gpg-agent:GPG Agent
scdaemon:Smartcard Daemon
gpgsm:GPG for S/MIME
dirmngr:Directory Manager
gpg:GPG for OpenPGP:/usr/local/bin/gpg2:
gpg-agent:GPG Agent:/usr/local/bin/gpg-agent:
scdaemon:Smartcard Daemon:/usr/local/bin/scdaemon:
gpgsm:GPG for S/MIME:/usr/local/bin/gpgsm:
dirmngr:Directory Manager:/usr/local/bin/dirmngr:
@end example

View File

@ -1,3 +1,8 @@
2007-08-31 Werner Koch <wk@g10code.com>
* gpgconf-comp.c (gc_component_list_components): List the programs
names.
2007-08-29 Werner Koch <wk@g10code.com>
* gpgconf.c: New command --check-programs.

View File

@ -1142,16 +1142,43 @@ percent_deescape (const char *src)
void
gc_component_list_components (FILE *out)
{
gc_component_t idx;
gc_component_t component;
gc_option_t *option;
gc_backend_t backend;
int backend_seen[GC_BACKEND_NR];
const char *desc;
const char *pgmname;
for (idx = 0; idx < GC_COMPONENT_NR; idx++)
for (component = 0; component < GC_COMPONENT_NR; component++)
{
if (gc_component[idx].options)
option = gc_component[component].options;
if (option)
{
const char *desc = gc_component[idx].desc;
desc = my_dgettext (gc_component[idx].desc_domain, desc);
fprintf (out, "%s:%s\n",
gc_component[idx].name, my_percent_escape (desc));
for (backend = 0; backend < GC_BACKEND_NR; backend++)
backend_seen[backend] = 0;
pgmname = "";
for (; option && option->name; option++)
{
if ((option->flags & GC_OPT_FLAG_GROUP))
continue;
backend = option->backend;
if (backend_seen[backend])
continue;
backend_seen[backend] = 1;
assert (backend != GC_BACKEND_ANY);
if (gc_backend[backend].program
&& !gc_backend[backend].module_name)
continue;
pgmname = gnupg_module_name (gc_backend[backend].module_name);
break;
}
desc = gc_component[component].desc;
desc = my_dgettext (gc_component[component].desc_domain, desc);
fprintf (out, "%s:%s:",
gc_component[component].name, my_percent_escape (desc));
fprintf (out, "%s:\n", my_percent_escape (pgmname));
}
}
}