aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2022-11-28 04:55:50 +0000
committerNIIBE Yutaka <[email protected]>2022-11-28 04:55:50 +0000
commit588f353db1459c557603886964095d5a4176f794 (patch)
tree91a948c0c59b000c5c654f75fc70ff97ec82fe09
parenttests: Replace spawn-process by process-spawn. (diff)
downloadgnupg-588f353db1459c557603886964095d5a4176f794.tar.gz
gnupg-588f353db1459c557603886964095d5a4176f794.zip
Replace gnupg_spawn_process_detached for POSIX.
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--g13/be-encfs.c6
-rw-r--r--scd/app.c20
2 files changed, 20 insertions, 6 deletions
diff --git a/g13/be-encfs.c b/g13/be-encfs.c
index 25725daa2..9adb1e092 100644
--- a/g13/be-encfs.c
+++ b/g13/be-encfs.c
@@ -81,7 +81,11 @@ run_umount_helper (const char *mountpoint)
args[1] = mountpoint;
args[2] = NULL;
- err = gnupg_spawn_process_detached (pgmname, args, NULL);
+ err = gnupg_process_spawn (pgmname, args,
+ (GNUPG_PROCESS_DETACHED | GNUPG_PROCESS_STDIN_NULL
+ | GNUPG_PROCESS_STDOUT_NULL
+ | GNUPG_PROCESS_STDERR_NULL),
+ NULL, NULL, NULL);
if (err)
log_error ("failed to run '%s': %s\n",
pgmname, gpg_strerror (err));
diff --git a/scd/app.c b/scd/app.c
index aeb773a67..7716901dc 100644
--- a/scd/app.c
+++ b/scd/app.c
@@ -2316,6 +2316,14 @@ app_check_pin (card_t card, ctrl_t ctrl, const char *keyidstr,
static void
+setup_env (struct spawn_cb_arg *sca)
+{
+ char *v = sca->arg;
+
+ putenv (v);
+}
+
+static void
report_change (int slot, int old_status, int cur_status)
{
char *homestr, *envstr;
@@ -2342,12 +2350,9 @@ report_change (int slot, int old_status, int cur_status)
else
{
gpg_error_t err;
- const char *args[9], *envs[2];
+ const char *args[9];
char numbuf1[30], numbuf2[30], numbuf3[30];
- envs[0] = envstr;
- envs[1] = NULL;
-
sprintf (numbuf1, "%d", slot);
sprintf (numbuf2, "0x%04X", old_status);
sprintf (numbuf3, "0x%04X", cur_status);
@@ -2364,7 +2369,12 @@ report_change (int slot, int old_status, int cur_status)
args[8] = NULL;
fname = make_filename (gnupg_homedir (), "scd-event", NULL);
- err = gnupg_spawn_process_detached (fname, args, envs);
+ err = gnupg_process_spawn (fname, args,
+ (GNUPG_PROCESS_DETACHED
+ | GNUPG_PROCESS_STDIN_NULL
+ | GNUPG_PROCESS_STDOUT_NULL
+ | GNUPG_PROCESS_STDERR_NULL),
+ setup_env, envstr, NULL);
if (err && gpg_err_code (err) != GPG_ERR_ENOENT)
log_error ("failed to run event handler '%s': %s\n",
fname, gpg_strerror (err));