summaryrefslogtreecommitdiff
path: root/lib/command.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@cumulusnetworks.com>2016-07-29 15:54:03 +0000
committerQuentin Young <qlyoung@cumulusnetworks.com>2016-07-29 15:54:03 +0000
commitde9d7e4f3ccb1b199602c1a1ce884df37e54f834 (patch)
tree7ecb990ffe55f28e5ce77a059c791f558e503130 /lib/command.c
parent76699ae7e0358c57a1186b88962d7233a7057d76 (diff)
lib: Cleanup some memory issues in CLI
Various memory leaks have been fixed and the quagga memory macros are in use. Also consolidated the argv and matching code into one graph traversal. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'lib/command.c')
-rw-r--r--lib/command.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/command.c b/lib/command.c
index 490c2a0690..d3c6771248 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -4191,6 +4191,30 @@ cmd_terminate_element(struct cmd_element *cmd)
}
void
+free_cmd_element(struct cmd_element *cmd)
+{
+ if (!cmd) return;
+ free ((char*) cmd->string);
+ free ((char*) cmd->doc);
+ cmd_terminate_element(cmd);
+ free (cmd);
+}
+
+struct cmd_element *
+copy_cmd_element(struct cmd_element *cmd)
+{
+ struct cmd_element *el = XMALLOC(MTYPE_CMD_TOKENS, sizeof (struct cmd_element));
+ el->string = cmd->string ? XSTRDUP(MTYPE_CMD_TOKENS, cmd->string) : NULL;
+ el->func = cmd->func;
+ el->doc = cmd->doc ? XSTRDUP(MTYPE_CMD_TOKENS, cmd->doc) : NULL;
+ el->daemon = cmd->daemon;
+ el->tokens = cmd->tokens ? vector_copy(cmd->tokens) : NULL;
+ el->attr = cmd->attr;
+ fprintf(stderr, "successful copy\n");
+ return el;
+}
+
+void
cmd_terminate ()
{
unsigned int i, j;