Ensure GDB warnings are styled.
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sun, 15 Dec 2019 16:58:16 +0000 (17:58 +0100)
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Fri, 3 Jan 2020 20:13:21 +0000 (21:13 +0100)
While handling the comments of Tom related to
  [RFC] Have an option to tell GDB to detect and possibly handle mismatched exec-files.
  https://sourceware.org/ml/gdb-patches/2019-12/msg00621.html
I saw that GDB warnings are produced ignoring the given styles.

This patch:
  * ensures that style markups are properly handled by "warning".
  * changes 'set/show data-directory' so that file style is used
    in warnings and in 'show message'
  * changes all other messages in top.c to use file style when appropriate.
  * Uses the above data-directory changes in gdb.base/style.exp

2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* ui-file.c (stdio_file::can_emit_style_escape)
(tee_file::can_emit_style_escape): Ensure style is used also on
gdb_stderr when gdb_stderr is a tty supporting styling, similarly
to gdb_stdout.
* main.c (set_gdb_data_directory): Use file style to output the
warning that the given pathname is not a directory.
* top.c (show_history_filename, gdb_safe_append_history)
(show_gdb_datadir): Use file style.

2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* gdb.base/style.exp: Test that warnings are styled.

gdb/ChangeLog
gdb/main.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/style.exp
gdb/top.c
gdb/ui-file.c

index 3b26a3114f5003eee0797afe7f31bd69b1e85908..7bd889777b42407e51df72f2fd4034eaed8e8fb9 100644 (file)
@@ -1,3 +1,14 @@
+2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+       * ui-file.c (stdio_file::can_emit_style_escape)
+       (tee_file::can_emit_style_escape): Ensure style is used also on
+       gdb_stderr when gdb_stderr is a tty supporting styling, similarly
+       to gdb_stdout.
+       * main.c (set_gdb_data_directory): Use file style to output the
+       warning that the given pathname is not a directory.
+       * top.c (show_history_filename, gdb_safe_append_history)
+       (show_gdb_datadir): Use file style.
+
 2020-01-03  Hannes Domani  <ssbssa@yahoo.de>
 
        * solib-target.c (struct lm_info_target):
index 66a9e6a6d2eb109a35052bee5efa19a0daf0aa72..d5e5a678baa729d7b9210fecf9ef650f5c5233e9 100644 (file)
@@ -124,7 +124,8 @@ set_gdb_data_directory (const char *new_datadir)
       print_sys_errmsg (new_datadir, save_errno);
     }
   else if (!S_ISDIR (st.st_mode))
-    warning (_("%s is not a directory."), new_datadir);
+    warning (_("%ps is not a directory."),
+            styled_string (file_name_style.style (), new_datadir));
 
   gdb_datadir = gdb_realpath (new_datadir).get ();
 
index f7835f35f7c205df0c4c44061c7c4547b0c660e6..78f9700f25713b57073f66734638bd523108445d 100644 (file)
@@ -1,3 +1,7 @@
+2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+       * gdb.base/style.exp: Test that warnings are styled.
+
 2019-12-29  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        * gdb.base/line65535.exp: New file.
index 17b953838309742f223246c276aec023c6974d24..0457c3dc4ad0a61f0382720cbf07ef49aa34a01b 100644 (file)
@@ -139,4 +139,10 @@ save_vars { env(TERM) } {
 
     gdb_test "show logging file" \
        "The current logfile is \"[style .*? file]\"\\..*"
+
+    # Check warnings are styled by setting a rubbish data directory.
+    gdb_test "set data-directory Makefile" \
+       "warning: [style .*? file] is not a directory\\..*"
+    gdb_test "show data-directory" \
+       "GDB's data directory is \"[style .*? file]\"\\..*"
 }
index 7e9c40f11a71fd7309f8566506efbdbd0eb32147..3b93683cfafae5e9a36ce8fb8409c3497cd383b9 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -55,6 +55,7 @@
 #include "gdbsupport/scope-exit.h"
 #include "gdbarch.h"
 #include "gdbsupport/pathstuff.h"
+#include "cli/cli-style.h"
 
 /* readline include files.  */
 #include "readline/readline.h"
@@ -924,8 +925,8 @@ show_history_filename (struct ui_file *file, int from_tty,
                       struct cmd_list_element *c, const char *value)
 {
   fprintf_filtered (file, _("The filename in which to record "
-                           "the command history is \"%s\".\n"),
-                   value);
+                           "the command history is \"%ps\".\n"),
+                   styled_string (file_name_style.style (), value));
 }
 
 /* This is like readline(), but it has some gdb-specific behavior.
@@ -1192,8 +1193,10 @@ gdb_safe_append_history (void)
   saved_errno = errno;
   if (ret < 0 && saved_errno != ENOENT)
     {
-      warning (_("Could not rename %s to %s: %s"),
-              history_filename, local_history_filename.c_str (),
+      warning (_("Could not rename %ps to %ps: %s"),
+              styled_string (file_name_style.style (), history_filename),
+              styled_string (file_name_style.style (),
+                             local_history_filename.c_str ()),
               safe_strerror (saved_errno));
     }
   else
@@ -2094,8 +2097,9 @@ static void
 show_gdb_datadir (struct ui_file *file, int from_tty,
                  struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
-                   gdb_datadir.c_str ());
+  fprintf_filtered (file, _("GDB's data directory is \"%ps\".\n"),
+                   styled_string (file_name_style.style (),
+                                  gdb_datadir.c_str ()));
 }
 
 static void
index 10192a98cd04a9289bcd2cb14fae748d0a9993a6..af128b08f54f73575d567e7c19a6ad60311ca746 100644 (file)
@@ -302,7 +302,7 @@ stdio_file::isatty ()
 bool
 stdio_file::can_emit_style_escape ()
 {
-  return (this == gdb_stdout
+  return ((this == gdb_stdout || this == gdb_stderr)
          && this->isatty ()
          && term_cli_styling ());
 }
@@ -391,7 +391,7 @@ tee_file::term_out ()
 bool
 tee_file::can_emit_style_escape ()
 {
-  return (this == gdb_stdout
+  return ((this == gdb_stdout || this == gdb_stderr)
          && m_one->term_out ()
          && term_cli_styling ());
 }