gdb: new function to wrap up executing command line scripts/commands

Small refactor to wrap up executing the scripts and commands passed
using the -x, -ex, -ix, -iex command line flags.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* main.c (execute_cmdargs): New function.
	(captured_main_1): Make use of execute_cmdargs.
This commit is contained in:
Andrew Burgess 2020-09-09 11:26:22 +01:00
parent 64aaad6349
commit 74d877e522
2 changed files with 27 additions and 32 deletions

View file

@ -515,6 +515,26 @@ struct cmdarg
char *string;
};
/* From CMDARG_VEC execute command files (matching FILE_TYPE) or commands
(matching CMD_TYPE). Update the value in *RET if and scripts or
commands are executed. */
static void
execute_cmdargs (const std::vector<struct cmdarg> *cmdarg_vec,
cmdarg_kind file_type, cmdarg_kind cmd_type,
int *ret)
{
for (const auto &cmdarg_p : *cmdarg_vec)
{
if (cmdarg_p.type == file_type)
*ret = catch_command_errors (source_script, cmdarg_p.string,
!batch_flag);
else if (cmdarg_p.type == cmd_type)
*ret = catch_command_errors (execute_command, cmdarg_p.string,
!batch_flag);
}
}
static void
captured_main_1 (struct captured_main_args *context)
{
@ -1069,22 +1089,7 @@ captured_main_1 (struct captured_main_args *context)
ret = catch_command_errors (source_script, home_gdbinit.c_str (), 0);
/* Process '-ix' and '-iex' options early. */
for (i = 0; i < cmdarg_vec.size (); i++)
{
const struct cmdarg &cmdarg_p = cmdarg_vec[i];
switch (cmdarg_p.type)
{
case CMDARG_INIT_FILE:
ret = catch_command_errors (source_script, cmdarg_p.string,
!batch_flag);
break;
case CMDARG_INIT_COMMAND:
ret = catch_command_errors (execute_command, cmdarg_p.string,
!batch_flag);
break;
}
}
execute_cmdargs (&cmdarg_vec, CMDARG_INIT_FILE, CMDARG_INIT_COMMAND, &ret);
/* Now perform all the actions indicated by the arguments. */
if (cdarg != NULL)
@ -1195,22 +1200,7 @@ captured_main_1 (struct captured_main_args *context)
load_auto_scripts_for_objfile (objfile);
/* Process '-x' and '-ex' options. */
for (i = 0; i < cmdarg_vec.size (); i++)
{
const struct cmdarg &cmdarg_p = cmdarg_vec[i];
switch (cmdarg_p.type)
{
case CMDARG_FILE:
ret = catch_command_errors (source_script, cmdarg_p.string,
!batch_flag);
break;
case CMDARG_COMMAND:
ret = catch_command_errors (execute_command, cmdarg_p.string,
!batch_flag);
break;
}
}
execute_cmdargs (&cmdarg_vec, CMDARG_FILE, CMDARG_COMMAND, &ret);
/* Read in the old history after all the command files have been
read. */