|
@@ -45,7 +45,7 @@ static bool_t ksession_validate_arg(ksession_t *session, kpargv_t *pargv)
|
|
|
if (!ptype_entry)
|
|
|
return BOOL_FALSE;
|
|
|
|
|
|
- if (!ksession_exec_locally(session, ptype_entry, pargv,
|
|
|
+ if (!ksession_exec_locally(session, ptype_entry, pargv, NULL,
|
|
|
&retcode, &out)) {
|
|
|
return BOOL_FALSE;
|
|
|
}
|
|
@@ -638,8 +638,8 @@ kexec_t *ksession_parse_for_exec(ksession_t *session, const char *raw_line,
|
|
|
}
|
|
|
|
|
|
|
|
|
-kexec_t *ksession_parse_for_local_exec(ksession_t *session,
|
|
|
- const kentry_t *entry, const kpargv_t *parent_pargv)
|
|
|
+kexec_t *ksession_parse_for_local_exec(ksession_t *session, const kentry_t *entry,
|
|
|
+ const kpargv_t *parent_pargv, const kcontext_t *parent_context)
|
|
|
{
|
|
|
faux_argv_node_t *argv_iter = NULL;
|
|
|
kpargv_t *pargv = NULL;
|
|
@@ -684,6 +684,7 @@ kexec_t *ksession_parse_for_local_exec(ksession_t *session,
|
|
|
kcontext_set_scheme(context, ksession_scheme(session));
|
|
|
kcontext_set_pargv(context, pargv);
|
|
|
kcontext_set_parent_pargv(context, parent_pargv);
|
|
|
+ kcontext_set_parent_context(context, parent_context);
|
|
|
kcontext_set_session(context, session);
|
|
|
kexec_add_contexts(exec, context);
|
|
|
|
|
@@ -788,7 +789,8 @@ static bool_t action_stdout_ev(faux_eloop_t *eloop, faux_eloop_type_e type,
|
|
|
|
|
|
|
|
|
bool_t ksession_exec_locally(ksession_t *session, const kentry_t *entry,
|
|
|
- kpargv_t *parent_pargv, int *retcode, char **out)
|
|
|
+ kpargv_t *parent_pargv, const kcontext_t *parent_context,
|
|
|
+ int *retcode, char **out)
|
|
|
{
|
|
|
kexec_t *exec = NULL;
|
|
|
faux_eloop_t *eloop = NULL;
|
|
@@ -801,7 +803,8 @@ bool_t ksession_exec_locally(ksession_t *session, const kentry_t *entry,
|
|
|
return BOOL_FALSE;
|
|
|
|
|
|
|
|
|
- exec = ksession_parse_for_local_exec(session, entry, parent_pargv);
|
|
|
+ exec = ksession_parse_for_local_exec(session, entry,
|
|
|
+ parent_pargv, parent_context);
|
|
|
if (!exec)
|
|
|
return BOOL_FALSE;
|
|
|
|