From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28117 invoked by alias); 8 Mar 2010 17:46:13 -0000 Received: (qmail 28108 invoked by uid 22791); 8 Mar 2010 17:46:12 -0000 X-SWARE-Spam-Status: No, hits=-7.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 08 Mar 2010 17:46:07 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o28Hjv4g022713 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 8 Mar 2010 12:45:57 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o28Hjuqt007840; Mon, 8 Mar 2010 12:45:56 -0500 Received: from opsy.redhat.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id o28HjtJ9024208; Mon, 8 Mar 2010 12:45:56 -0500 Received: by opsy.redhat.com (Postfix, from userid 500) id 419443782A7; Mon, 8 Mar 2010 10:45:55 -0700 (MST) From: Tom Tromey To: Eli Zaretskii Cc: pedro@codesourcery.com, gdb-patches@sourceware.org Subject: Re: RFA: fix CLI/9591 (pagination and --batch) References: <201003052050.51865.pedro@codesourcery.com> <831vfx4xt8.fsf@gnu.org> Reply-To: Tom Tromey Date: Mon, 08 Mar 2010 17:46:00 -0000 In-Reply-To: <831vfx4xt8.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 06 Mar 2010 11:13:55 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-03/txt/msg00316.txt.bz2 >>>>> "Eli" == Eli Zaretskii writes: Eli> This is okay, but please also add notes to the two referenced nodes Eli> telling how the batch mode changes their respective defaults. It doesn't change their defaults, it permanently overrides them. So, I didn't update those nodes. Eli> Oh, and please use @kbd{set confirm off}, as that would be a command Eli> typed at the keyboard. Done. >> +/* True if --batch or --batch-silent was seen. */ >> +int batch = 0; Eli> Is it wise to have a global symbol with such a short and ``general'' Eli> name? Previously, it was static, so that was probably okay. Now it's Eli> a true global, so it could potentially clash with some library. I'd Eli> suggest to rename it to something less invasive. I think that is very unlikely, but I went ahead and made the change anyway. Here is a new version with a NEWS entry. Please review. Tom 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 Tom Tromey PR cli/9591: * gdb.texinfo (Mode Options): Mention lack of pagination with --batch. Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.361 diff -u -r1.361 NEWS --- NEWS 5 Mar 2010 20:18:11 -0000 1.361 +++ NEWS 8 Mar 2010 17:44:31 -0000 @@ -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 Index: main.c =================================================================== RCS file: /cvs/src/src/gdb/main.c,v retrieving revision 1.80 diff -u -r1.80 main.c --- main.c 20 Jan 2010 14:23:07 -0000 1.80 +++ main.c 8 Mar 2010 17:44:31 -0000 @@ -76,6 +76,9 @@ 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 @@ 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 @@ {"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 @@ } break; case 'B': - batch = batch_silent = 1; + batch_flag = batch_silent = 1; gdb_stdout = ui_file_new(); break; #ifdef GDBTK @@ -631,7 +633,7 @@ use_windows = 0; } - if (batch) + if (batch_flag) quiet = 1; } @@ -803,15 +805,15 @@ /* 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 @@ 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 @@ 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 @@ { 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); Index: main.h =================================================================== RCS file: /cvs/src/src/gdb/main.h,v retrieving revision 1.10 diff -u -r1.10 main.h --- main.h 1 Jan 2010 07:31:37 -0000 1.10 +++ main.h 8 Mar 2010 17:44:31 -0000 @@ -34,5 +34,6 @@ extern int return_child_result; extern int return_child_result_value; extern int batch_silent; +extern int batch_flag; #endif Index: utils.c =================================================================== RCS file: /cvs/src/src/gdb/utils.c,v retrieving revision 1.227 diff -u -r1.227 utils.c --- utils.c 5 Mar 2010 20:18:14 -0000 1.227 +++ utils.c 8 Mar 2010 17:44:31 -0000 @@ -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 @@ 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); Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.678 diff -u -r1.678 gdb.texinfo --- doc/gdb.texinfo 5 Mar 2010 20:18:16 -0000 1.678 +++ doc/gdb.texinfo 8 Mar 2010 17:44:35 -0000 @@ -1028,7 +1028,9 @@ 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