From patchwork Sat Nov 29 02:01:02 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 3999 Received: (qmail 2906 invoked by alias); 29 Nov 2014 02:01:30 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 32403 invoked by uid 89); 29 Nov 2014 02:01:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 X-HELO: mail-qg0-f54.google.com Received: from mail-qg0-f54.google.com (HELO mail-qg0-f54.google.com) (209.85.192.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 29 Nov 2014 02:01:15 +0000 Received: by mail-qg0-f54.google.com with SMTP id q107so5426923qgd.13 for ; Fri, 28 Nov 2014 18:01:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=EeoCARfBGJV7B8L4dRC5o7BJSHRNEWueheVwBoHlK6g=; b=Ma4kh/gdyXD52eQlTMvZHLnK3yMMdMlfDjBuY+IDXWjGkO5NdysCIE9qp3lI0+FQJu c3zGKUBVz0nz1xng/u1ZasRrVvGTSf5WlXNJ3TgLrmOE7ZmhqXOz5qL0J0mne96TiSBB DAcgW6FqRbC4t95dfa7wZHglcs1jdFBYTDxDmGW5Ghq1ValX1r36sWZ0DgIIJywPrc6u 2wfgp9JDX2MCurhRJjt+WBkZNpp5+ZLATgTOrxkTwLCUPqCRRIQQ3AKGc+8nSRVXw40M s84m68xl1otTknouh6JbAbjqcVxwuAs7l7VB0kosHofNDbCJxKvWADHyW1HxQM8eXSrb mnFg== X-Gm-Message-State: ALoCoQl9dqZdRae/j7qCbsymaUMR52gzQjVYvlZ5ZfBMkVSHfPppijoXiCm6sqFlJAMJfrQtWjvm X-Received: by 10.140.97.37 with SMTP id l34mr67954923qge.43.1417226471332; Fri, 28 Nov 2014 18:01:11 -0800 (PST) Received: from localhost.localdomain (ool-4353af5c.dyn.optonline.net. [67.83.175.92]) by mx.google.com with ESMTPSA id e6sm10834380qab.42.2014.11.28.18.01.09 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Nov 2014 18:01:10 -0800 (PST) From: Patrick Palka To: gdb-patches@sourceware.org Cc: Patrick Palka Subject: [PATCH] Append to input history file instead of overwriting it Date: Fri, 28 Nov 2014 21:01:02 -0500 Message-Id: <1417226462-11254-1-git-send-email-patrick@parcs.ath.cx> X-IsSubscribed: yes This patch makes readline append new history lines to the GDB history file on exit instead of overwriting the entire history file on exit. This change allows us to run multiple simultaneous GDB sessions without having each session overwrite the added history of each other session on exit. It is particularly helpful when debugging GDB with GDB. Does this look OK to commit? Tested on x86_64-unknown-linux-gnu. gdb/ChangeLog: * top.h (gdb_add_history): Declare. * top.c (command_count): New variable. (gdb_add_history): New function. (quit_force): Append to history file instead of overwriting it. (command_line_input): Use gdb_add_history instead of add_history. * event-top.c (command_line_handler): Likewise. --- gdb/event-top.c | 2 +- gdb/top.c | 19 ++++++++++++++++--- gdb/top.h | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gdb/event-top.c b/gdb/event-top.c index cb438ac..490bca6 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -667,7 +667,7 @@ command_line_handler (char *rl) /* Add line to history if appropriate. */ if (*linebuffer && input_from_terminal_p ()) - add_history (linebuffer); + gdb_add_history (linebuffer); /* Note: lines consisting solely of comments are added to the command history. This is useful when you type a command, and then diff --git a/gdb/top.c b/gdb/top.c index c4b5c2c..6ec3acc 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -895,7 +895,20 @@ gdb_rl_operate_and_get_next (int count, int key) return rl_newline (1, key); } - + +/* Number of user commands executed during this session. */ + +static int command_count; + +/* Add the user command COMMAND to the input history list. */ + +void +gdb_add_history (const char *command) +{ + add_history (command); + command_count++; +} + /* Read one line from the command input stream `instream' into the local static buffer `linebuffer' (whose current length is `linelength'). @@ -1090,7 +1103,7 @@ command_line_input (char *prompt_arg, int repeat, char *annotation_suffix) /* Add line to history if appropriate. */ if (*linebuffer && input_from_terminal_p ()) - add_history (linebuffer); + gdb_add_history (linebuffer); /* Save into global buffer if appropriate. */ if (repeat) @@ -1441,7 +1454,7 @@ quit_force (char *args, int from_tty) { if (write_history_p && history_filename && input_from_terminal_p ()) - write_history (history_filename); + append_history (command_count, history_filename); } DO_PRINT_EX; diff --git a/gdb/top.h b/gdb/top.h index 94f6c48..d8baea8 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -79,6 +79,8 @@ extern int history_expansion_p; extern int server_command; extern char *lim_at_start; +extern void gdb_add_history (const char *); + extern void show_commands (char *args, int from_tty); extern void set_history (char *, int);