From 7c953934352840c28dcda0c8a6a18660aa1e3ab9 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 8 Mar 2010 19:20:38 +0000 Subject: [PATCH] gdb PR cli/9591: * NEWS: Update. * utils.c: Include main.h. (fputs_maybe_filtered): Don't paginate if `batch_flag'. (defaulted_query): Use default answer if `batch_flag'. * main.h (batch_flag): Declare. * main.c (batch_flag): New global. (captured_main): Remove 'batch'. Update. gdb/doc PR cli/9591: * gdb.texinfo (Mode Options): Mention lack of pagination and confirmation with --batch. (Screen Size): Mention --batch. (Messages/Warnings): Likewise. --- gdb/ChangeLog | 11 +++++++++++ gdb/NEWS | 2 ++ gdb/doc/ChangeLog | 8 ++++++++ gdb/doc/gdb.texinfo | 12 +++++++++--- gdb/main.c | 34 ++++++++++++++++++---------------- gdb/main.h | 1 + gdb/utils.c | 3 ++- 7 files changed, 51 insertions(+), 20 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1683731828..4fed3ff5d0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2010-03-08 Tom Tromey + + PR cli/9591: + * NEWS: Update. + * utils.c: Include main.h. + (fputs_maybe_filtered): Don't paginate if `batch_flag'. + (defaulted_query): Use default answer if `batch_flag'. + * main.h (batch_flag): Declare. + * main.c (batch_flag): New global. + (captured_main): Remove 'batch'. Update. + 2010-03-08 Kevin Buettner From Richard Sandiford, Martin M. Hunt, Corinna Vinschen, diff --git a/gdb/NEWS b/gdb/NEWS index 7e33caa17d..64c48f6378 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -3,6 +3,8 @@ *** Changes since GDB 7.1 +* The --batch flag now disables pagination and queries. + * X86 general purpose registers GDB now supports reading/writing byte, word and double-word x86 diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index bbd7895fb7..285ec9d220 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,11 @@ +2010-03-08 Tom Tromey + + PR cli/9591: + * gdb.texinfo (Mode Options): Mention lack of pagination and + confirmation with --batch. + (Screen Size): Mention --batch. + (Messages/Warnings): Likewise. + 2010-03-05 Tom Tromey * gdb.texinfo (Basic Python): Document target_charset and diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 41b11b63ec..a1f3a7836b 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1028,7 +1028,9 @@ Run in batch mode. Exit with status @code{0} after processing all the command files specified with @samp{-x} (and all commands from initialization files, if not inhibited with @samp{-n}). Exit with nonzero status if an error occurs in executing the @value{GDBN} commands -in the command files. +in the command files. Batch mode also disables pagination; +@pxref{Screen Size} and acts as if @kbd{set confirm off} were in +effect (@pxref{Messages/Warnings}). Batch mode may be useful for running @value{GDBN} as a filter, for example to download and run a program on another computer; in order to @@ -18494,7 +18496,9 @@ from wrapping its output. @itemx set pagination off @kindex set pagination Turn the output pagination on or off; the default is on. Turning -pagination off is the alternative to @code{set height 0}. +pagination off is the alternative to @code{set height 0}. Note that +running @value{GDBN} with the @option{--batch} option (@pxref{Mode +Options, -batch}) also automatically disables pagination. @item show pagination @kindex show pagination @@ -18717,7 +18721,9 @@ commands, you can disable this ``feature'': @cindex confirmation @cindex stupid questions @item set confirm off -Disables confirmation requests. +Disables confirmation requests. Note that running @value{GDBN} with +the @option{--batch} option (@pxref{Mode Options, -batch}) also +automatically disables confirmation requests. @item set confirm on Enables confirmation requests (the default). diff --git a/gdb/main.c b/gdb/main.c index e261348827..170a5b412d 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -76,6 +76,9 @@ struct ui_file *gdb_stdtargin; struct ui_file *gdb_stdtarg; struct ui_file *gdb_stdtargerr; +/* True if --batch or --batch-silent was seen. */ +int batch_flag = 0; + /* Support for the --batch-silent option. */ int batch_silent = 0; @@ -247,7 +250,6 @@ captured_main (void *data) int argc = context->argc; char **argv = context->argv; static int quiet = 0; - static int batch = 0; static int set_args = 0; /* Pointers to various arguments from command line. */ @@ -386,7 +388,7 @@ captured_main (void *data) {"nx", no_argument, &inhibit_gdbinit, 1}, {"n", no_argument, &inhibit_gdbinit, 1}, {"batch-silent", no_argument, 0, 'B'}, - {"batch", no_argument, &batch, 1}, + {"batch", no_argument, &batch_flag, 1}, {"epoch", no_argument, &epoch_interface, 1}, /* This is a synonym for "--annotate=1". --annotate is now preferred, @@ -537,7 +539,7 @@ captured_main (void *data) } break; case 'B': - batch = batch_silent = 1; + batch_flag = batch_silent = 1; gdb_stdout = ui_file_new(); break; #ifdef GDBTK @@ -631,7 +633,7 @@ extern int gdbtk_test (char *); use_windows = 0; } - if (batch) + if (batch_flag) quiet = 1; } @@ -803,15 +805,15 @@ Excess command line arguments ignored. (%s%s)\n"), /* The exec file and the symbol-file are the same. If we can't open it, better only print one error message. catch_command_errors returns non-zero on success! */ - if (catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL)) - catch_command_errors (symbol_file_add_main, symarg, !batch, RETURN_MASK_ALL); + if (catch_command_errors (exec_file_attach, execarg, !batch_flag, RETURN_MASK_ALL)) + catch_command_errors (symbol_file_add_main, symarg, !batch_flag, RETURN_MASK_ALL); } else { if (execarg != NULL) - catch_command_errors (exec_file_attach, execarg, !batch, RETURN_MASK_ALL); + catch_command_errors (exec_file_attach, execarg, !batch_flag, RETURN_MASK_ALL); if (symarg != NULL) - catch_command_errors (symbol_file_add_main, symarg, !batch, RETURN_MASK_ALL); + catch_command_errors (symbol_file_add_main, symarg, !batch_flag, RETURN_MASK_ALL); } if (corearg && pidarg) @@ -820,10 +822,10 @@ Can't attach to process and specify a core file at the same time.")); if (corearg != NULL) catch_command_errors (core_file_command, corearg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else if (pidarg != NULL) catch_command_errors (attach_command, pidarg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else if (pid_or_core_arg) { /* The user specified 'gdb program pid' or gdb program core'. @@ -833,13 +835,13 @@ Can't attach to process and specify a core file at the same time.")); if (isdigit (pid_or_core_arg[0])) { if (catch_command_errors (attach_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL) == 0) + !batch_flag, RETURN_MASK_ALL) == 0) catch_command_errors (core_file_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } else /* Can't be a pid, better be a corefile. */ catch_command_errors (core_file_command, pid_or_core_arg, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } if (ttyarg != NULL) @@ -859,17 +861,17 @@ Can't attach to process and specify a core file at the same time.")); { if (cmdarg[i].type == CMDARG_FILE) catch_command_errors (source_script, cmdarg[i].string, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); else /* cmdarg[i].type == CMDARG_COMMAND */ catch_command_errors (execute_command, cmdarg[i].string, - !batch, RETURN_MASK_ALL); + !batch_flag, RETURN_MASK_ALL); } xfree (cmdarg); /* Read in the old history after all the command files have been read. */ init_history (); - if (batch) + if (batch_flag) { /* We have hit the end of the batch file. */ quit_force (NULL, 0); diff --git a/gdb/main.h b/gdb/main.h index 5e457249a8..4b27c1a325 100644 --- a/gdb/main.h +++ b/gdb/main.h @@ -34,5 +34,6 @@ extern int gdb_main (struct captured_main_args *); extern int return_child_result; extern int return_child_result_value; extern int batch_silent; +extern int batch_flag; #endif diff --git a/gdb/utils.c b/gdb/utils.c index 8054f0355e..e225a3f14f 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -58,6 +58,7 @@ #include "gdb_obstack.h" #include "gdbcore.h" #include "top.h" +#include "main.h" #include "inferior.h" /* for signed_pointer_to_address */ @@ -1496,7 +1497,7 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args) question we're asking, and then answer the default automatically. This way, important error messages don't get lost when talking to GDB over a pipe. */ - if (! input_from_terminal_p ()) + if (batch_flag || ! input_from_terminal_p ()) { wrap_here (""); vfprintf_filtered (gdb_stdout, ctlstr, args); -- 2.34.1