aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2025-02-17 15:00:52 +0000
committerAndrew Burgess <aburgess@redhat.com>2025-03-17 16:59:13 +0000
commita6924ac89d75188cd9ad3b740226db11798520dd (patch)
tree1a0d8fb1db817db29cd0f82c9c968ef83b68277a
parent050c30f4db42d715d45c7dfcf40d85378945ec0a (diff)
downloadbinutils-a6924ac89d75188cd9ad3b740226db11798520dd.zip
binutils-a6924ac89d75188cd9ad3b740226db11798520dd.tar.gz
binutils-a6924ac89d75188cd9ad3b740226db11798520dd.tar.bz2
gdb: make cli_styling static within cli/cli-style.c
The cli_styling variable is controlled by 'set style enabled on|off' user setting, and is currently globally visible. In a couple of places we access this variable directly, though in ui-file.c the accesses are all performed through term_cli_styling(), which is a function that wraps checking cli_styling along with a check that GDB's terminal supports styling. In a future commit, I'd plan to add a new parameter to gdb.execute() which will allow styling to be temporarily suppressed. In an earlier proposal, I made gdb.execute() disable styling by changing the value of cli_styling, however, this approach has a problem. If gdb.execute() is used to run 'show style enabled', the changing cli_styling will change what is printed. Similarly, if gdb.execute() is used to execute 'set style enabled on|off' then having gdb.execute() save and restore the value of cli_styling will undo the adjustment from 'set style enabled ...'. So what I plan to do in the future, is add a new control flag which can be used to temporarily disable styling. To make this new control variable easier to add, lets force everyone to call term_cli_styling() to check if styling is enabled or not. To force everyone to use term_cli_styling() this commit makes cli_styling static within gdb/cli/cli-style.c. Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/cli/cli-style.c20
-rw-r--r--gdb/cli/cli-style.h11
-rw-r--r--gdb/main.c2
-rw-r--r--gdb/tui/tui-wingeneral.c2
-rw-r--r--gdb/ui-file.c10
5 files changed, 28 insertions, 17 deletions
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index 47f7d2e..3ca30a4 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -27,9 +27,9 @@
/* True if styling is enabled. */
#if defined (__MSDOS__)
-bool cli_styling = false;
+static bool cli_styling = false;
#else
-bool cli_styling = true;
+static bool cli_styling = true;
#endif
/* True if source styling is enabled. Note that this is only
@@ -81,6 +81,22 @@ terminal_supports_styling ()
/* See cli/cli-style.h. */
void
+disable_cli_styling ()
+{
+ cli_styling = false;
+}
+
+/* See cli/cli-style.h. */
+
+bool
+term_cli_styling ()
+{
+ return cli_styling;
+}
+
+/* See cli/cli-style.h. */
+
+void
disable_styling_from_environment ()
{
const char *no_color = getenv ("NO_COLOR");
diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h
index 1fb89a3..18827ce 100644
--- a/gdb/cli/cli-style.h
+++ b/gdb/cli/cli-style.h
@@ -157,13 +157,18 @@ extern bool source_styling;
/* True if disassembler styling is enabled. */
extern bool disassembler_styling;
-/* True if styling is enabled. */
-extern bool cli_styling;
-
/* Check for environment variables that indicate styling should start as
disabled. If any are found then disable styling. Styling is never
enabled by this call. If styling was already disabled then it remains
disabled after this call. */
extern void disable_styling_from_environment ();
+/* Equivalent to 'set style enabled off'. Can be used during GDB's start
+ up if a command line option, or environment variable, indicates that
+ styling should be turned off. */
+extern void disable_cli_styling ();
+
+/* Return true styled output is currently enabled. */
+extern bool term_cli_styling ();
+
#endif /* GDB_CLI_CLI_STYLE_H */
diff --git a/gdb/main.c b/gdb/main.c
index 2545a157..27043b7 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -1027,7 +1027,7 @@ captured_main_1 (struct captured_main_args *context)
quiet = 1;
/* Disable all output styling when running in batch mode. */
- cli_styling = false;
+ disable_cli_styling ();
}
}
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 56e7abd..90fdaceb 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -80,7 +80,7 @@ box_win (struct tui_win_info *win_info,
/* tui_apply_style resets the style entirely, so be sure to call it
before applying ATTRS. */
- if (cli_styling)
+ if (term_cli_styling ())
tui_apply_style (win, (highlight_flag
? tui_active_border_style.style ()
: tui_border_style.style ()));
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
index 1a2f563..e9d3a90 100644
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -180,16 +180,6 @@ null_file::write_async_safe (const char *buf, long sizeof_buf)
-/* Return true if styling is currently enabled. */
-
-static bool
-term_cli_styling ()
-{
- return cli_styling;
-}
-
-
-
string_file::~string_file ()
{}