diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pies.c | 10 | ||||
-rw-r--r-- | src/progman.c | 7 |
2 files changed, 12 insertions, 5 deletions
@@ -615,3 +615,3 @@ parse_legacy_env (char **argv, envop_t **envop) mem = grecs_malloc (msize); - snprintf (mem, msize, "${%s:-}${%s+%c}%s", + snprintf (mem, msize, "${%s:-}${%s:+%c}%s", name, name, value[0], value + 1); @@ -637,3 +637,3 @@ parse_legacy_env (char **argv, envop_t **envop) mem = grecs_malloc (msize); - snprintf (mem, msize, "%s${%s+%c}${%s:-}", + snprintf (mem, msize, "%s${%s:+%c}${%s:-}", value, name, c, name); @@ -787,2 +787,3 @@ _cb_env_unset (enum grecs_callback_command cmd, struct component *comp = varptr; + char *p; @@ -791,3 +792,6 @@ _cb_env_unset (enum grecs_callback_command cmd, return 1; - if (envop_entry_add (&comp->envop, envop_unset, value->v.string, NULL)) + p = strchr (value->v.string, '='); + if (p) + *p++ = 0; + if (envop_entry_add (&comp->envop, envop_unset, value->v.string, p)) grecs_error (locus, errno, "envop_entry_add"); diff --git a/src/progman.c b/src/progman.c index b75a2db..a6dc418 100644 --- a/src/progman.c +++ b/src/progman.c @@ -823,3 +823,3 @@ prog_start_prologue (struct prog *prog) for (i = 0; sockenv_var[i]; i++) - environ_unset (prog->v.p.env, sockenv_var[i]); + environ_unset (prog->v.p.env, sockenv_var[i], NULL); } @@ -1980,3 +1980,3 @@ run_command (struct action *act, struct prog *prog, unsigned retcode, { - pid_t pid; + pid_t pid, master_pid; char *argv[4]; @@ -1984,2 +1984,4 @@ run_command (struct action *act, struct prog *prog, unsigned retcode, + master_pid = getpid (); + /* FIXME: optionally set output redirectors for this command? */ @@ -2000,2 +2002,3 @@ run_command (struct action *act, struct prog *prog, unsigned retcode, setenv ("PIES_COMPONENT", prog_tag (prog), 1); + setenv ("PIES_MASTER_PID", umaxtostr (master_pid, buf), 1); setenv ("PIES_PID", umaxtostr (child_pid, buf), 1); |