diff options
author | Werner Koch <[email protected]> | 2014-10-30 08:55:51 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2014-10-30 08:55:51 +0000 |
commit | 9546aa3cc87fc83a40768a12fbbceb19496ce129 (patch) | |
tree | 4615b34ccbfcd5c2be616c84285ea822822c4d72 /common/asshelp.c | |
parent | po: Add a new German translation (diff) | |
download | gnupg-9546aa3cc87fc83a40768a12fbbceb19496ce129.tar.gz gnupg-9546aa3cc87fc83a40768a12fbbceb19496ce129.zip |
tests: Speed up the genkey1024.test by using not so strong random.
* agent/gpg-agent.c (oDebugQuickRandom): New.
(opts): New option --debug-quick-random.
(main): Use new option.
* common/asshelp.c (start_new_gpg_agent): Add hack to pass an
additional argument for the agent name.
* tests/openpgp/defs.inc: Pass --debug-quick-random to the gpg-agent
starting parameters.
* tests/openpgp/version.test: Ditto.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'common/asshelp.c')
-rw-r--r-- | common/asshelp.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/common/asshelp.c b/common/asshelp.c index e97d39603..3fc28a156 100644 --- a/common/asshelp.c +++ b/common/asshelp.c @@ -363,7 +363,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, assuan_context_t ctx; int did_success_msg = 0; char *sockname; - const char *argv[5]; + const char *argv[6]; *r_ctx = NULL; @@ -380,10 +380,31 @@ start_new_gpg_agent (assuan_context_t *r_ctx, { char *abs_homedir; lock_spawn_t lock; + char *program = NULL; + const char *program_arg = NULL; + char *p; + const char *s; + int i; /* With no success start a new server. */ if (!agent_program || !*agent_program) agent_program = gnupg_module_name (GNUPG_MODULE_NAME_AGENT); + else if ((s=strchr (agent_program, '|')) && s[1] == '-' && s[2]=='-') + { + /* Hack to insert an additional option on the command line. */ + program = xtrystrdup (agent_program); + if (!program) + { + gpg_error_t tmperr = gpg_err_make (errsource, + gpg_err_code_from_syserror ()); + xfree (sockname); + assuan_release (ctx); + return tmperr; + } + p = strchr (program, '|'); + *p++ = 0; + program_arg = p; + } if (verbose) log_info (_("no running gpg-agent - starting '%s'\n"), @@ -404,6 +425,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, log_error ("error building filename: %s\n",gpg_strerror (tmperr)); xfree (sockname); assuan_release (ctx); + xfree (program); return tmperr; } @@ -416,30 +438,32 @@ start_new_gpg_agent (assuan_context_t *r_ctx, xfree (sockname); assuan_release (ctx); xfree (abs_homedir); + xfree (program); return tmperr; } /* If the agent has been configured for use with a standard socket, an environment variable is not required and thus we we can savely start the agent here. */ - - argv[0] = "--homedir"; - argv[1] = abs_homedir; - argv[2] = "--use-standard-socket"; - argv[3] = "--daemon"; - argv[4] = NULL; + i = 0; + argv[i++] = "--homedir"; + argv[i++] = abs_homedir; + argv[i++] = "--use-standard-socket"; + if (program_arg) + argv[i++] = program_arg; + argv[i++] = "--daemon"; + argv[i++] = NULL; if (!(err = lock_spawning (&lock, homedir, "agent", verbose)) && assuan_socket_connect (ctx, sockname, 0, 0)) { - err = gnupg_spawn_process_detached (agent_program, argv,NULL); + err = gnupg_spawn_process_detached (program? program : agent_program, + argv, NULL); if (err) log_error ("failed to start agent '%s': %s\n", agent_program, gpg_strerror (err)); else { - int i; - for (i=0; i < SECS_TO_WAIT_FOR_AGENT; i++) { if (verbose) @@ -462,6 +486,7 @@ start_new_gpg_agent (assuan_context_t *r_ctx, unlock_spawning (&lock, "agent"); xfree (abs_homedir); + xfree (program); } xfree (sockname); if (err) |