diff options
author | Werner Koch <[email protected]> | 2017-03-23 10:45:17 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-03-23 16:55:21 +0000 |
commit | 2c9d9ac55ea455a5ec26428989dced0311ed46cc (patch) | |
tree | 0b45d913814b7fdbfc8fa2e54c0ca1028f95eee3 /tools/gpgconf.c | |
parent | gpgscm: Make test cleanup more robust. (diff) | |
download | gnupg-2c9d9ac55ea455a5ec26428989dced0311ed46cc.tar.gz gnupg-2c9d9ac55ea455a5ec26428989dced0311ed46cc.zip |
tests: Use gpgconf to stop the agent.
* tests/openpgp/defs.scm (stop-agent): Swap order of actions. Kill
all daemons using gpgconf.
* tools/gpgconf.c (main) <aRemoveSocketDir>: Try to remove known
socketfails on rmdir failure. Do no fail for ENONET.
--
Killing all daemons is not really required but it does not harm to be
prepared for the future.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tools/gpgconf.c')
-rw-r--r-- | tools/gpgconf.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/tools/gpgconf.c b/tools/gpgconf.c index c6fb24e61..d6bf9a26a 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -456,6 +456,7 @@ query_swdb (estream_t out, const char *name, const char *current_version) int main (int argc, char **argv) { + gpg_error_t err; ARGPARSE_ARGS pargs; const char *fname; int no_more_options = 0; @@ -755,7 +756,42 @@ main (int argc, char **argv) else if (opt.dry_run) ; else if (rmdir (socketdir)) - gc_error (1, errno, "error removing '%s'", socketdir); + { + /* If the director is not empty we first try to delet + * socket files. */ + err = gpg_error_from_syserror (); + if (gpg_err_code (err) == GPG_ERR_ENOTEMPTY + || gpg_err_code (err) == GPG_ERR_EEXIST) + { + static const char * const names[] = { + GPG_AGENT_SOCK_NAME, + GPG_AGENT_EXTRA_SOCK_NAME, + GPG_AGENT_BROWSER_SOCK_NAME, + GPG_AGENT_SSH_SOCK_NAME, + SCDAEMON_SOCK_NAME, + DIRMNGR_SOCK_NAME + }; + int i; + char *p; + + for (i=0; i < DIM(names); i++) + { + p = strconcat (socketdir , "/", names[i], NULL); + if (p) + gnupg_remove (p); + xfree (p); + } + if (rmdir (socketdir)) + gc_error (1, 0, "error removing '%s': %s", + socketdir, gpg_strerror (err)); + } + else if (gpg_err_code (err) == GPG_ERR_ENOENT) + gc_error (0, 0, "warning: removing '%s' failed: %s", + socketdir, gpg_strerror (err)); + else + gc_error (1, 0, "error removing '%s': %s", + socketdir, gpg_strerror (err)); + } xfree (socketdir); } |