mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
Add --reload command to gpgconf.
Fix a problem in exechelp.c Get ready for a release.
This commit is contained in:
parent
b61b2f542a
commit
c20b3db108
42 changed files with 6590 additions and 6466 deletions
|
@ -1,3 +1,14 @@
|
|||
2009-03-03 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpgconf.c: New command --reload.
|
||||
|
||||
* gpgconf-comp.c (gc_component_reload): New.
|
||||
|
||||
2009-03-02 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpgconf-comp.c (scdaemon_runtime_change): Killsc d only if it is
|
||||
not running.
|
||||
|
||||
2009-02-27 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpgconf-comp.c (gpg_agent_runtime_change): Declare static.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* gpgconf-comp.c - Configuration utility for GnuPG.
|
||||
* Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -1051,12 +1051,21 @@ scdaemon_runtime_change (void)
|
|||
{
|
||||
gpg_error_t err;
|
||||
const char *pgmname;
|
||||
const char *argv[2];
|
||||
const char *argv[6];
|
||||
pid_t pid;
|
||||
|
||||
/* We use "GETINFO app_running" to see whether the agent is already
|
||||
running and kill it only in this case. This avoids an explicit
|
||||
starting of the agent in case it is not yet running. There is
|
||||
obviously a race condition but that should not harm too much. */
|
||||
|
||||
pgmname = gnupg_module_name (GNUPG_MODULE_NAME_CONNECT_AGENT);
|
||||
argv[0] = "scd killscd";
|
||||
argv[1] = NULL;
|
||||
argv[0] = "-s";
|
||||
argv[1] = "GETINFO scd_running";
|
||||
argv[2] = "/if ${! $?}";
|
||||
argv[3] = "scd killscd";
|
||||
argv[4] = "/end";
|
||||
argv[5] = NULL;
|
||||
|
||||
err = gnupg_spawn_process_fd (pgmname, argv, -1, -1, -1, &pid);
|
||||
if (!err)
|
||||
|
@ -1067,6 +1076,44 @@ scdaemon_runtime_change (void)
|
|||
}
|
||||
|
||||
|
||||
/* Unconditionally reload COMPONENT or all components if COMPONENT is -1. */
|
||||
void
|
||||
gc_component_reload (int component)
|
||||
{
|
||||
int runtime[GC_BACKEND_NR];
|
||||
gc_option_t *option;
|
||||
gc_backend_t backend;
|
||||
|
||||
/* Set a flag for the backends to be reloaded. */
|
||||
for (backend = 0; backend < GC_BACKEND_NR; backend++)
|
||||
runtime[backend] = 0;
|
||||
|
||||
if (component == -1)
|
||||
{
|
||||
for (component = 0; component < GC_COMPONENT_NR; component++)
|
||||
{
|
||||
option = gc_component[component].options;
|
||||
for (; option && option->name; option++)
|
||||
runtime[option->backend] = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert (component < GC_COMPONENT_NR);
|
||||
option = gc_component[component].options;
|
||||
for (; option && option->name; option++)
|
||||
runtime[option->backend] = 1;
|
||||
}
|
||||
|
||||
/* Do the reload for all selected backends. */
|
||||
for (backend = 0; backend < GC_BACKEND_NR; backend++)
|
||||
{
|
||||
if (runtime[backend] && gc_backend[backend].runtime_change)
|
||||
(*gc_backend[backend].runtime_change) ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* More or less Robust version of dgettext. It has the side effect of
|
||||
switching the codeset to utf-8 because this is what we want to
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* gpgconf.c - Configuration utility for GnuPG
|
||||
* Copyright (C) 2003, 2007 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2003, 2007, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -47,7 +47,8 @@ enum cmd_and_opt_values
|
|||
aApplyDefaults,
|
||||
aListConfig,
|
||||
aCheckConfig,
|
||||
aListDirs
|
||||
aListDirs,
|
||||
aReload
|
||||
|
||||
};
|
||||
|
||||
|
@ -70,6 +71,7 @@ static ARGPARSE_OPTS opts[] =
|
|||
N_("list global configuration file") },
|
||||
{ aCheckConfig, "check-config", 256,
|
||||
N_("check global configuration file") },
|
||||
{ aReload, "reload", 256, "@" },
|
||||
|
||||
{ 301, NULL, 0, N_("@\nOptions:\n ") },
|
||||
|
||||
|
@ -176,6 +178,7 @@ main (int argc, char **argv)
|
|||
case aApplyDefaults:
|
||||
case aListConfig:
|
||||
case aCheckConfig:
|
||||
case aReload:
|
||||
cmd = pargs.r_opt;
|
||||
break;
|
||||
|
||||
|
@ -233,6 +236,31 @@ main (int argc, char **argv)
|
|||
}
|
||||
break;
|
||||
|
||||
case aReload:
|
||||
if (!fname)
|
||||
{
|
||||
/* Reload all. */
|
||||
gc_component_reload (-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Reload given component. */
|
||||
int idx;
|
||||
|
||||
idx = gc_component_find (fname);
|
||||
if (idx < 0)
|
||||
{
|
||||
fputs (_("Component not found"), stderr);
|
||||
putc ('\n', stderr);
|
||||
exit (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gc_component_reload (idx);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case aListConfig:
|
||||
if (gc_process_gpgconf_conf (fname, 0, 0, get_outfp (&outfp)))
|
||||
exit (1);
|
||||
|
|
|
@ -44,6 +44,9 @@ char *gc_percent_escape (const char *src);
|
|||
|
||||
void gc_error (int status, int errnum, const char *fmt, ...);
|
||||
|
||||
/* Reload given component. */
|
||||
void gc_component_reload (int component);
|
||||
|
||||
/* List all components that are available. */
|
||||
void gc_component_list_components (FILE *out);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue