From cd7e76ebf0e09466aeb3c61498360c45a1a3ad39 Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Mon, 23 Nov 2009 15:01:12 -0800 Subject: refactor command_new to use command_registration Save stack space: use a struct. Makes it easier to add new parameters. --- src/helper/command.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/helper/command.c') diff --git a/src/helper/command.c b/src/helper/command.c index dd109657..8d710c99 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -238,23 +238,21 @@ static struct command **command_list_for_parent( } static struct command *command_new(struct command_context *cmd_ctx, - struct command *parent, const char *name, - command_handler_t handler, enum command_mode mode, - const char *help, const char *usage) + struct command *parent, const struct command_registration *cr) { - assert(name); + assert(cr->name); struct command *c = malloc(sizeof(struct command)); memset(c, 0, sizeof(struct command)); - c->name = strdup(name); - if (help) - c->help = strdup(help); - if (usage) - c->usage = strdup(usage); + c->name = strdup(cr->name); + if (cr->help) + c->help = strdup(cr->help); + if (cr->usage) + c->usage = strdup(cr->usage); c->parent = parent; - c->handler = handler; - c->mode = mode; + c->handler = cr->handler; + c->mode = cr->mode; command_add_child(command_list_for_parent(cmd_ctx, parent), c); @@ -328,7 +326,7 @@ struct command* register_command(struct command_context *context, return c; } - c = command_new(context, parent, name, cr->handler, cr->mode, cr->help, cr->usage); + c = command_new(context, parent, cr); /* if allocation failed or it is a placeholder (no handler), we're done */ if (NULL == c || NULL == c->handler) return c; -- cgit v1.2.3