/* FIXME: needs comment: */
void
add_dump_command(const char *name,
		 void (*func)(const char *args, const char *mode),
		 const char *descr)
{
  struct cmd_list_element *c;
  struct dump_context *d;

  c = add_cmd(name, all_commands, NULL, descr, &dump_cmdlist);
  c->completer = filename_completer;
  d = XMALLOC(struct dump_context);
  d->func = func;
  d->mode = FOPEN_WB;
  set_cmd_context(c, d);
  c->func = call_dump_func;

  c = add_cmd(name, all_commands, NULL, descr, &append_cmdlist);
  c->completer = filename_completer;
  d = XMALLOC(struct dump_context);
  d->func = func;
  d->mode = FOPEN_AB;
  set_cmd_context(c, d);
  c->func = call_dump_func;

  /* Replace "Dump " at start of docstring with "Append " (borrowed
     from [deleted] deprecated_add_show_from_set).  */
  if ((c->doc[0] == 'W') && (c->doc[1] == 'r') && (c->doc[2] == 'i')
      && (c->doc[3] == 't') && (c->doc[4] == 'e') && (c->doc[5] == ' '))
    c->doc = concat("Append ", c->doc + 6, (char *)NULL);
}
Exemple #2
0
static void
add_setshow_generic (enum var_types param_type, enum command_class cmd_class,
		     char *cmd_name, param_smob *self,
		     char *set_doc, char *show_doc, char *help_doc,
		     cmd_const_sfunc_ftype *set_func,
		     show_value_ftype *show_func,
		     struct cmd_list_element **set_list,
		     struct cmd_list_element **show_list,
		     struct cmd_list_element **set_cmd,
		     struct cmd_list_element **show_cmd)
{
  struct cmd_list_element *param = NULL;
  const char *tmp_name = NULL;

  switch (param_type)
    {
    case var_boolean:
      add_setshow_boolean_cmd (cmd_name, cmd_class,
			       &self->value.intval,
			       set_doc, show_doc, help_doc,
			       set_func, show_func,
			       set_list, show_list);

      break;

    case var_auto_boolean:
      add_setshow_auto_boolean_cmd (cmd_name, cmd_class,
				    &self->value.autoboolval,
				    set_doc, show_doc, help_doc,
				    set_func, show_func,
				    set_list, show_list);
      break;

    case var_uinteger:
      add_setshow_uinteger_cmd (cmd_name, cmd_class,
				&self->value.uintval,
				set_doc, show_doc, help_doc,
				set_func, show_func,
				set_list, show_list);
      break;

    case var_zinteger:
      add_setshow_zinteger_cmd (cmd_name, cmd_class,
				&self->value.intval,
				set_doc, show_doc, help_doc,
				set_func, show_func,
				set_list, show_list);
      break;

    case var_zuinteger:
      add_setshow_zuinteger_cmd (cmd_name, cmd_class,
				 &self->value.uintval,
				 set_doc, show_doc, help_doc,
				 set_func, show_func,
				 set_list, show_list);
      break;

    case var_zuinteger_unlimited:
      add_setshow_zuinteger_unlimited_cmd (cmd_name, cmd_class,
					   &self->value.intval,
					   set_doc, show_doc, help_doc,
					   set_func, show_func,
					   set_list, show_list);
      break;

    case var_string:
      add_setshow_string_cmd (cmd_name, cmd_class,
			      &self->value.stringval,
			      set_doc, show_doc, help_doc,
			      set_func, show_func,
			      set_list, show_list);
      break;

    case var_string_noescape:
      add_setshow_string_noescape_cmd (cmd_name, cmd_class,
				       &self->value.stringval,
				       set_doc, show_doc, help_doc,
				       set_func, show_func,
				       set_list, show_list);

      break;

    case var_optional_filename:
      add_setshow_optional_filename_cmd (cmd_name, cmd_class,
					 &self->value.stringval,
					 set_doc, show_doc, help_doc,
					 set_func, show_func,
					 set_list, show_list);
      break;

    case var_filename:
      add_setshow_filename_cmd (cmd_name, cmd_class,
				&self->value.stringval,
				set_doc, show_doc, help_doc,
				set_func, show_func,
				set_list, show_list);
      break;

    case var_enum:
      add_setshow_enum_cmd (cmd_name, cmd_class,
			    self->enumeration,
			    &self->value.cstringval,
			    set_doc, show_doc, help_doc,
			    set_func, show_func,
			    set_list, show_list);
      /* Initialize the value, just in case.  */
      self->value.cstringval = self->enumeration[0];
      break;

    default:
      gdb_assert_not_reached ("bad param_type value");
    }

  /* Lookup created parameter, and register Scheme object against the
     parameter context.  Perform this task against both lists.  */
  tmp_name = cmd_name;
  param = lookup_cmd (&tmp_name, *show_list, "", 0, 1);
  gdb_assert (param != NULL);
  set_cmd_context (param, self);
  *set_cmd = param;

  tmp_name = cmd_name;
  param = lookup_cmd (&tmp_name, *set_list, "", 0, 1);
  gdb_assert (param != NULL);
  set_cmd_context (param, self);
  *show_cmd = param;
}