Browse Source

context: Add parent_pargv and parg_to_validate to context structure

Serj Kalichev 2 years ago
parent
commit
6826f238d2
2 changed files with 19 additions and 0 deletions
  1. 7 0
      klish/kcontext.h
  2. 12 0
      klish/ksession/kcontext.c

+ 7 - 0
klish/kcontext.h

@@ -29,6 +29,13 @@ FAUX_HIDDEN bool_t kcontext_set_sym(kcontext_t *context, ksym_t *sym);
 // Pargv object
 kpargv_t *kcontext_pargv(const kcontext_t *context);
 FAUX_HIDDEN bool_t kcontext_set_pargv(kcontext_t *context, kpargv_t *pargv);
+// Parent pargv object
+kpargv_t *kcontext_parent_pargv(const kcontext_t *context);
+FAUX_HIDDEN bool_t kcontext_set_pargv(kcontext_t *context, kpargv_t *parent_pargv);
+// Parg to validate
+kparg_t *kcontext_parg_to_validate(const kcontext_t *context);
+FAUX_HIDDEN bool_t kcontext_set_parg_to_validate(kcontext_t *context,
+	kparg_t *parg_to_validate);
 // Action iterator
 faux_list_node_t *kcontext_action_iter(const kcontext_t *context);
 FAUX_HIDDEN bool_t kcontext_set_action_iter(kcontext_t *context, faux_list_node_t *action_iter);

+ 12 - 0
klish/ksession/kcontext.c

@@ -19,6 +19,8 @@ struct kcontext_s {
 	int retcode;
 	kplugin_t *plugin;
 	kpargv_t *pargv;
+	kpargv_t *parent_pargv; // Parent
+	kparg_t *parg_to_validate; // Parent
 	faux_list_node_t *action_iter; // Current action
 	ksym_t *sym;
 	int stdin;
@@ -51,6 +53,14 @@ FAUX_HIDDEN KSET(context, ksym_t *, sym);
 KGET(context, kpargv_t *, pargv);
 FAUX_HIDDEN KSET(context, kpargv_t *, pargv);
 
+// Parent pargv
+KGET(context, kpargv_t *, parent_pargv);
+FAUX_HIDDEN KSET(context, kpargv_t *, parent_pargv);
+
+// Parg to validate
+KGET(context, kparg_t *, parg_to_validate);
+FAUX_HIDDEN KSET(context, kparg_t *, parg_to_validate);
+
 // Action iterator
 KGET(context, faux_list_node_t *, action_iter);
 FAUX_HIDDEN KSET(context, faux_list_node_t *, action_iter);
@@ -90,6 +100,8 @@ kcontext_t *kcontext_new(kcontext_type_e type)
 	context->retcode = 0;
 	context->plugin = NULL;
 	context->pargv = NULL;
+	context->parent_pargv = NULL; // Don't free
+	context->parg_to_validate = NULL; // Don't free
 	context->action_iter = NULL;
 	context->sym = NULL;
 	context->stdin = -1;