aboutsummaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
Diffstat (limited to 'src/helper')
-rw-r--r--src/helper/command.c9
-rw-r--r--src/helper/command.h8
2 files changed, 17 insertions, 0 deletions
diff --git a/src/helper/command.c b/src/helper/command.c
index 40e8b05..cbd52fb 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -1339,6 +1339,15 @@ struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp
return context;
}
+void command_exit(struct command_context *context)
+{
+ if (!context)
+ return;
+
+ Jim_FreeInterp(context->interp);
+ command_done(context);
+}
+
int command_context_mode(struct command_context *cmd_ctx, enum command_mode mode)
{
if (!cmd_ctx)
diff --git a/src/helper/command.h b/src/helper/command.h
index bd24156..f696ab8 100644
--- a/src/helper/command.h
+++ b/src/helper/command.h
@@ -308,6 +308,14 @@ struct command_context *current_command_context(Jim_Interp *interp);
*/
struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp);
/**
+ * Shutdown a command context.
+ *
+ * Free the command context and the associated Jim interpreter.
+ *
+ * @param context The command_context that will be destroyed.
+ */
+void command_exit(struct command_context *context);
+/**
* Creates a copy of an existing command context. This does not create
* a deep copy of the command list, so modifications in one context will
* affect all shared contexts. The caller must track reference counting