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 The command argument @code{--list-components} lists all available
components, one per line. The format of each line is: components, one per line. The format of each line is:
@code{@var{name}:@var{description}} @code{@var{name}:@var{description}:@var{pgmname}:}
@table @var @table @var
@item name @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 of the component. It can be displayed to the user of the GUI for
informational purposes. It is @emph{percent-escaped} and informational purposes. It is @emph{percent-escaped} and
@emph{localized}. @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 @end table
Example: Example:
@example @example
$ gpgconf --list-components $ gpgconf --list-components
gpg:GPG for OpenPGP gpg:GPG for OpenPGP:/usr/local/bin/gpg2:
gpg-agent:GPG Agent gpg-agent:GPG Agent:/usr/local/bin/gpg-agent:
scdaemon:Smartcard Daemon scdaemon:Smartcard Daemon:/usr/local/bin/scdaemon:
gpgsm:GPG for S/MIME gpgsm:GPG for S/MIME:/usr/local/bin/gpgsm:
dirmngr:Directory Manager dirmngr:Directory Manager:/usr/local/bin/dirmngr:
@end example @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> 2007-08-29 Werner Koch <wk@g10code.com>
* gpgconf.c: New command --check-programs. * gpgconf.c: New command --check-programs.

View File

@ -1142,16 +1142,43 @@ percent_deescape (const char *src)
void void
gc_component_list_components (FILE *out) 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; for (backend = 0; backend < GC_BACKEND_NR; backend++)
desc = my_dgettext (gc_component[idx].desc_domain, desc); backend_seen[backend] = 0;
fprintf (out, "%s:%s\n",
gc_component[idx].name, my_percent_escape (desc)); 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));
} }
} }
} }