diff options
author | NIIBE Yutaka <[email protected]> | 2016-09-02 04:41:19 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2016-09-02 04:41:19 +0000 |
commit | 8b6c0bae33bdc36892f4595806665ce61f77dfd2 (patch) | |
tree | b2e7245131c54b785877dc46c1ae6d1fb2e860e1 /agent/call-scd.c | |
parent | po: Update Japanese translation. (diff) | |
download | gnupg-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.c | 21 |
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); |