This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[users/palves/format_strings] %pS/%pN -> %p[/%p]


On 7/1/19 6:20 PM, Tom Tromey wrote:
>>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
> 
> Pedro> The visual balance of brackets is appealing as well, so I can't say
> Pedro> I have a strong preference either way.  If you've been converting things
> Pedro> already, you'll have a better judgment, so I'll defer to you.
> 
> I haven't really converted much, just what you saw on the branch.
> 
> I suspect using some kind of paired brackets will make it a little
> harder to forget to close the style.  But probably only a little.  Also
> I guess we could add asserts to check that the closing parameter is
> always null.

Let's try this.  I pushed the patch below to the branch.

>From 5984c619b7ee91e6414b1a56d0a735240fb5afce Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Mon, 1 Jul 2019 19:07:44 +0100
Subject: [PATCH] %pS/%pN -> %p[/%p]

---
 gdb/common/format.c |  3 ++-
 gdb/ui-out.c        | 12 ++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/gdb/common/format.c b/gdb/common/format.c
index 177f79afee3..345bdfc4cca 100644
--- a/gdb/common/format.c
+++ b/gdb/common/format.c
@@ -259,7 +259,8 @@ format_pieces::format_pieces (const char **arg, bool gdb_extensions)
 		  case 's':
 		  case 'S':
 		  case 'F':
-		  case 'N':
+		  case '[':
+		  case ']':
 		    f++;
 		    break;
 		  }
diff --git a/gdb/ui-out.c b/gdb/ui-out.c
index d50fb3a3e3f..065a9209656 100644
--- a/gdb/ui-out.c
+++ b/gdb/ui-out.c
@@ -617,12 +617,16 @@ ui_out::vmessage (const char *format, va_list args)
 		call_do_message (ss->style (), "%s", ss->str ());
 	      }
 	      break;
-	    case 'S':
+	    case '[':
 	      style = *va_arg (args, const ui_file_style *);
 	      break;
-	    case 'N':
-	      va_arg (args, void *);
-	      style = {};
+	    case ']':
+	      {
+		void *arg = va_arg (args, void *);
+		gdb_assert (arg == nullptr);
+
+		style = {};
+	      }
 	      break;
 	    default:
 	      call_do_message (style, current_substring, va_arg (args, void *));
-- 
2.14.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]