From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id rUmGEImrO2hOgDwAWB0awg (envelope-from ) for ; Sat, 31 May 2025 21:23:21 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=akkartik.com header.i=@akkartik.com header.a=rsa-sha256 header.s=fm2 header.b=k24XSI7J; dkim=pass (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.a=rsa-sha256 header.s=fm1 header.b=ldKV5sZI; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 343901E102; Sat, 31 May 2025 21:23:21 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL, RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 886221E089 for ; Sat, 31 May 2025 21:23:20 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 900CC3858C78 for ; Sun, 1 Jun 2025 01:23:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 900CC3858C78 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=akkartik.com header.i=@akkartik.com header.a=rsa-sha256 header.s=fm2 header.b=k24XSI7J; dkim=pass (2048-bit key, unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.a=rsa-sha256 header.s=fm1 header.b=ldKV5sZI Received: from fhigh-b5-smtp.messagingengine.com (fhigh-b5-smtp.messagingengine.com [202.12.124.156]) by sourceware.org (Postfix) with ESMTPS id DCE393858D20 for ; Sun, 1 Jun 2025 01:21:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DCE393858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=akkartik.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=akkartik.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DCE393858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=202.12.124.156 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1748740915; cv=none; b=jUhNWuNPd5gje8keiPetT1GgmdN/4eUOLEYG15PFnS0/gWxP2OLK14S94yf9Q34zl0B0DIfGOeBCGjwW1gGiHSkl0fDWsWMFmVAVQ6rSHC1Gyf+nsKgtu00kUbc0pUsvs+IJd1cEcBI8vhyuALRxF/8HcRrfnwvJNuGgeMAtEew= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1748740915; c=relaxed/simple; bh=iUG7bv+v48X/A/JBwYcdwyUc847J/AaX4xdz/TzmKcU=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=TVOAn+R0iXUGgnuzdrpKsao1DW/O/NPv3QununBfxvEZgexfIfJqbIl3bP6hFplJBUnGQ3xq6+gKmWksnxnueLRWF/0Or4cJgIpHxlkQaUX8CM3YEbVjuAsZmoY0CLknXk/iOAZdUUNYs2TpmNyR9SahAgJGMyMbJ4PB9WS+9fQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DCE393858D20 Received: from phl-compute-03.internal (phl-compute-03.phl.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id 74A5825400C8; Sat, 31 May 2025 21:21:54 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-03.internal (MEProxy); Sat, 31 May 2025 21:21:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akkartik.com; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1748740914; x= 1748827314; bh=JRDxMInIPBd9SQGl8rUFvPH6wYIe/+9UvR/XRCDBggw=; b=k 24XSI7JalFROnnvfIfOpYWBFhnO9+zEzireA0UE29uhAnYTEaBhIh2xuLcApmwhZ ZzIbY/I6Goq3mqbitSaX7LhvXco1+AcFrqAZpcv2qrTHqBkhb8qStRNxWiOLi4ws j5AeMinD8oipr6YgTP9jWMKG4l0HJoZjkWq15SpOb2E/P4Du9fUnUzwRHhsmFjNu Dtyli8CRmHYnYNYBWozU84QvPICUiViAUYwynt0H9N0UhXqIiNZqFQzC3Lvy/UmE PpFPKQIV7lJ1uuKu9zE95paGeq24w9rJDsfBkEi236JPiCkOPRukGPtcUwnwRGfc +RfSvdBT6kLFBwFVn2Rug== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1748740914; x=1748827314; bh=J RDxMInIPBd9SQGl8rUFvPH6wYIe/+9UvR/XRCDBggw=; b=ldKV5sZInPtKzAO0B y97nj5xPpWrjDfeGf+tEqLBthJcfZmNn9Eh8TuLwHYimTZLtDVg6EIHMVsT+Wqcs Sv6Mvhz9UCDqu385HcuyxOYr/xgoFw1/GzLImYosYimoD60lWNKbuHEZHcVtuOyR Tv7nxretFidQhNnZ2tq5qw/yljtT/4HtQnEAPMgdLsrSjWzZ+TmLFZFcx2oM7ub+ FtYgK3IpzHX8qq7djpaRErhNVf9dZtMRbPeesKbdvKdqtaRr2Yqt4ZGj2ygdJBqr 2kpS7FNRQ+D8gVO4q5dlE7FTvB/5qpdRz0REPyo8mzRzJo7q+ljlr1jnA+Xjjcjg Ha/2g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdeffeeggeculddtuddrgeefvddrtd dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd dtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhep fdfmrghrthhikhcumfdrucetghgrrhgrmhdfuceorghksegrkhhkrghrthhikhdrtghomh eqnecuggftrfgrthhtvghrnhepveekgfejteeugeetieduleduteduleefteejhfetjeel lefhfeejledvhfeltefhnecuffhomhgrihhnpehsohhurhgtvgifrghrvgdrohhrghenuc evlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegrkhesrghk khgrrhhtihhkrdgtohhmpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuth dprhgtphhtthhopehguggsqdhprghttghhvghssehsohhurhgtvgifrghrvgdrohhrghdp rhgtphhtthhopehguhhinhgvvhgvrhgvsehrvgguhhgrthdrtghomhdprhgtphhtthhope grkhesrghkkhgrrhhtihhkrdgtohhm X-ME-Proxy: Feedback-ID: id12946ff:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 31 May 2025 21:21:53 -0400 (EDT) From: "Kartik K. Agaram" To: gdb-patches@sourceware.org Cc: guinevere@redhat.com, "Kartik K. Agaram" Subject: [PATCH] gdb: redo whitespace-stripping from commands Date: Sat, 31 May 2025 18:17:11 -0700 Message-ID: <20250601011941.204158-2-ak@akkartik.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250601011941.204158-1-ak@akkartik.com> References: <20250529125138.1118538-1-ak@akkartik.com> <20250601011941.204158-1-ak@akkartik.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Before this patch, trailing whitespace was not stripped from 'set' and 'complete' commands. Now I've added 'with' commands to that list because they contain a 'complete' subcommand. To accomplish this, I'm fixing an ancient TODO to provide a per-command flag controlling whitespace-stripping. Any subcommands of 'with' besides 'complete' or 'set' will continue to work because they go through a recursive call to execute_command. The outer call for 'with' won't strip whitespace, then the recursive call will. I've also cleaned up 2 obsolete TODOs and NOTEs in related code. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29784 --- gdb/cli/cli-cmds.c | 11 ++++------- gdb/cli/cli-cmds.h | 4 ---- gdb/cli/cli-decode.c | 1 + gdb/cli/cli-decode.h | 8 ++++---- gdb/top.c | 12 +----------- 5 files changed, 10 insertions(+), 26 deletions(-) diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 9a5021f9d08..f2d6d576cb8 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -427,12 +427,6 @@ complete_command (const char *arg, int from_tty) } } -int -is_complete_command (struct cmd_list_element *c) -{ - return cmd_simple_func_eq (c, complete_command); -} - static void show_version (const char *args, int from_tty) { @@ -2702,8 +2696,10 @@ Generic command for showing things about the program being debugged."), add_com_alias ("i", info_cmd, class_info, 1); add_com_alias ("inf", info_cmd, class_info, 1); - add_com ("complete", class_obscure, complete_command, + cmd_list_element *complete_cmd + = add_com ("complete", class_obscure, complete_command, _("List the completions for the rest of the line as a command.")); + complete_cmd->strip_trailing_white_space_p = false; c = add_show_prefix_cmd ("show", class_info, _("\ Generic command for showing things about the debugger."), @@ -2726,6 +2722,7 @@ E.g.:\n\ You can change multiple settings using nested with, and use\n\ abbreviations for commands and/or values. E.g.:\n\ w la p -- w p el u -- p obj")); + with_cmd->strip_trailing_white_space_p = false; set_cmd_completer_handle_brkchars (with_cmd, with_command_completer); add_com_alias ("w", with_cmd, class_vars, 1); diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h index 33d13fb8563..c3004a8e857 100644 --- a/gdb/cli/cli-cmds.h +++ b/gdb/cli/cli-cmds.h @@ -149,10 +149,6 @@ extern struct cmd_list_element *showsourcelist; extern unsigned int max_user_call_depth; -/* Exported to gdb/top.c */ - -int is_complete_command (struct cmd_list_element *cmd); - /* Exported to gdb/main.c */ extern void cd_command (const char *, int); diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index 48a34667c37..782d38f781f 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -582,6 +582,7 @@ add_setshow_cmd_full_erased (const char *name, extra_literals, args, full_set_doc.release (), set_list); set->doc_allocated = 1; + set->strip_trailing_white_space_p = false; if (set_func != NULL) set->func = set_func; diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h index 9be446fb641..d3d512adcd4 100644 --- a/gdb/cli/cli-decode.h +++ b/gdb/cli/cli-decode.h @@ -60,6 +60,7 @@ struct cmd_list_element allow_unknown (0), abbrev_flag (0), type (not_set_cmd), + strip_trailing_white_space_p (true), doc (doc_) { gdb_assert (name != nullptr); @@ -175,11 +176,10 @@ struct cmd_list_element or "show"). */ ENUM_BITFIELD (cmd_types) type : 2; + bool strip_trailing_white_space_p; + /* Function definition of this command. NULL for command class - names and for help topics that are not really commands. NOTE: - cagney/2002-02-02: This function signature is evolving. For - the moment suggest sticking with either set_cmd_cfunc() or - set_cmd_sfunc(). */ + names and for help topics that are not really commands. */ cmd_func_ftype *func; /* The command's real callback. At present func() bounces through diff --git a/gdb/top.c b/gdb/top.c index 6adef467b90..8a1e586b4c1 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -503,20 +503,10 @@ execute_command (const char *p, int from_tty) arg = *p == '\0' ? nullptr : p; } - /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy - while the is_complete_command(cfunc) test is just plain - bogus. They should both be replaced by a test of the form - c->strip_trailing_white_space_p. */ - /* NOTE: cagney/2002-02-02: The function.cfunc in the below - can't be replaced with func. This is because it is the - cfunc, and not the func, that has the value that the - is_complete_command hack is testing for. */ /* Clear off trailing whitespace, except for set and complete command. */ std::string without_whitespace; - if (arg - && c->type != set_cmd - && !is_complete_command (c)) + if (arg && c->strip_trailing_white_space_p) { const char *old_end = arg + strlen (arg) - 1; p = old_end; -- 2.49.0