aboutsummaryrefslogtreecommitdiffstats
path: root/agent/call-scd.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2016-09-02 04:41:19 +0000
committerNIIBE Yutaka <[email protected]>2016-09-02 04:41:19 +0000
commit8b6c0bae33bdc36892f4595806665ce61f77dfd2 (patch)
treeb2e7245131c54b785877dc46c1ae6d1fb2e860e1 /agent/call-scd.c
parentpo: Update Japanese translation. (diff)
downloadgnupg-8b6c0bae33bdc36892f4595806665ce61f77dfd2.tar.gz
gnupg-8b6c0bae33bdc36892f4595806665ce61f77dfd2.zip
agent: invoke scdaemon with --homedir.
* agent/call-scd.c (start_scd): Supply --homedir option when it's not default homedir. -- Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'agent/call-scd.c')
-rw-r--r--agent/call-scd.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/agent/call-scd.c b/agent/call-scd.c
index b77684007..934ab4ca0 100644
--- a/agent/call-scd.c
+++ b/agent/call-scd.c
@@ -195,10 +195,11 @@ start_scd (ctrl_t ctrl)
gpg_error_t err = 0;
const char *pgmname;
assuan_context_t ctx = NULL;
- const char *argv[3];
+ const char *argv[5];
assuan_fd_t no_close_list[3];
int i;
int rc;
+ char *abs_homedir = NULL;
if (opt.disable_scdaemon)
return gpg_error (GPG_ERR_NOT_SUPPORTED);
@@ -313,7 +314,22 @@ start_scd (ctrl_t ctrl)
argv[0] = pgmname;
argv[1] = "--multi-server";
- argv[2] = NULL;
+ if (gnupg_default_homedir_p ())
+ argv[2] = NULL;
+ else
+ {
+ abs_homedir = make_absfilename_try (gnupg_homedir (), NULL);
+ if (!abs_homedir)
+ {
+ log_error ("error building filename: %s\n",
+ gpg_strerror (gpg_error_from_syserror ()));
+ goto leave;
+ }
+
+ argv[2] = "--homedir";
+ argv[3] = abs_homedir;
+ argv[4] = NULL;
+ }
i=0;
if (!opt.running_detached)
@@ -393,6 +409,7 @@ start_scd (ctrl_t ctrl)
primary_scd_ctx_reusable = 0;
leave:
+ xfree (abs_homedir);
if (err)
{
unlock_scd (ctrl, err);