1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-09-21 15:01:41 +02:00

scd:w32: Export GNUPGHOME for scd-event.

* scd/app.c (report_change): Set up GNUPGHOME.

--

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2024-09-05 13:37:21 +09:00
parent aac5a8f008
commit c9677e9501
No known key found for this signature in database
GPG Key ID: 640114AF89DE6054

View File

@ -2460,16 +2460,6 @@ app_check_pin (card_t card, ctrl_t ctrl, const char *keyidstr,
return err; return err;
} }
#ifndef HAVE_W32_SYSTEM
static void
setup_env (void *arg)
{
char *v = arg;
putenv (v);
}
#endif
static void static void
report_change (int slot, int old_status, int cur_status) report_change (int slot, int old_status, int cur_status)
{ {
@ -2492,7 +2482,13 @@ report_change (int slot, int old_status, int cur_status)
xfree (fname); xfree (fname);
homestr = make_filename (gnupg_homedir (), NULL); homestr = make_filename (gnupg_homedir (), NULL);
#ifdef HAVE_W32_SYSTEM
/* An environment block is terminated by two/four zero bytes. It's
* four zero bytes for Unicode. Let us always use four zero bytes. */
if (gpgrt_asprintf (&envstr, "GNUPGHOME=%s%c%c%c", homestr, 0, 0, 0) < 0)
#else
if (gpgrt_asprintf (&envstr, "GNUPGHOME=%s", homestr) < 0) if (gpgrt_asprintf (&envstr, "GNUPGHOME=%s", homestr) < 0)
#endif
log_error ("out of core while building environment\n"); log_error ("out of core while building environment\n");
else else
{ {
@ -2520,8 +2516,11 @@ report_change (int slot, int old_status, int cur_status)
err = gpgrt_spawn_actions_new (&act); err = gpgrt_spawn_actions_new (&act);
if (!err) if (!err)
{ {
#ifndef HAVE_W32_SYSTEM #ifdef HAVE_W32_SYSTEM
gpgrt_spawn_actions_set_atfork (act, setup_env, envstr); gpgrt_spawn_actions_set_envvars (act, envstr);
#else
char *env[2] = { envstr, NULL };
gpgrt_spawn_actions_set_environ (act, env);
#endif #endif
err = gpgrt_process_spawn (fname, args, GPGRT_PROCESS_DETACHED, err = gpgrt_process_spawn (fname, args, GPGRT_PROCESS_DETACHED,
act, NULL); act, NULL);