Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • cmd.c

    r4c7c21f rf25df21  
    1212
    1313int owl_cmddict_setup(owl_cmddict *cd) {
    14   owl_cmddict_init(cd);
     14  if (0 != owl_cmddict_init(cd)) return(-1);
    1515  if (0 != owl_cmddict_add_from_list(cd, commands_to_init)) return(-1);
    1616  return(0);
    1717}
    1818
    19 void owl_cmddict_init(owl_cmddict *cd) {
    20   owl_dict_create(cd);
     19int owl_cmddict_init(owl_cmddict *cd) {
     20  if (owl_dict_create(cd)) return(-1);
     21  return(0);
    2122}
    2223
     
    9899
    99100char *owl_cmddict_execute_argv(const owl_cmddict *cd, const owl_context *ctx, const char *const *argv, int argc) {
    100   char *buff;
    101   char *retval = NULL;
    102 
    103   buff = g_strjoinv(" ", (char**)argv);
    104   retval = _owl_cmddict_execute(cd, ctx, argv, argc, buff);
    105   g_free(buff);
    106 
     101  GString *buf = g_string_new("");
     102  int i;
     103  char *retval;
     104
     105  /* We weren't given a command line, so fabricate a valid one. */
     106  for(i = 0; i < argc; i++) {
     107    if (i != 0)
     108      g_string_append_c(buf, ' ');
     109    owl_string_append_quoted_arg(buf, argv[i]);
     110  }
     111
     112  retval = _owl_cmddict_execute(cd, ctx, argv, argc, buf->str);
     113
     114  g_string_free(buf, true);
    107115  return retval;
    108116}
     
    134142void owl_cmd_cleanup(owl_cmd *cmd)
    135143{
    136   g_free(cmd->name);
    137   g_free(cmd->summary);
    138   g_free(cmd->usage);
    139   g_free(cmd->description);
    140   g_free(cmd->cmd_aliased_to);
     144  if (cmd->name) g_free(cmd->name);
     145  if (cmd->summary) g_free(cmd->summary);
     146  if (cmd->usage) g_free(cmd->usage);
     147  if (cmd->description) g_free(cmd->description);
     148  if (cmd->cmd_aliased_to) g_free(cmd->cmd_aliased_to);
    141149  if (cmd->cmd_perl) owl_perlconfig_cmd_cleanup(cmd);
    142150}
Note: See TracChangeset for help on using the changeset viewer.