Make print_command_trace varargs
authorTom Tromey <tom@tromey.com>
Wed, 18 Apr 2018 21:40:57 +0000 (15:40 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 4 May 2018 21:58:06 +0000 (15:58 -0600)
I noticed some code in execute_control_command_1 that could be
simplified by making print_command_trace a printf-like function.  This
patch makes this change.

ChangeLog
2018-05-04  Tom Tromey  <tom@tromey.com>

* top.c (execute_command): Update.
* cli/cli-script.h (print_command_lines): Now varargs.
* cli/cli-script.c (print_command_lines): Now varargs.
(execute_control_command_1) <case while_control, case if_control>:
Update.

gdb/ChangeLog
gdb/cli/cli-script.c
gdb/cli/cli-script.h
gdb/top.c

index 7630b030d581525e69be690ffa4785fa099c8c68..96009336db5dab42600c454ff9dadc6f3667c0cf 100644 (file)
@@ -1,3 +1,11 @@
+2018-05-04  Tom Tromey  <tom@tromey.com>
+
+       * top.c (execute_command): Update.
+       * cli/cli-script.h (print_command_lines): Now varargs.
+       * cli/cli-script.c (print_command_lines): Now varargs.
+       (execute_control_command_1) <case while_control, case if_control>:
+       Update.
+
 2018-05-04  Tom Tromey  <tom@tromey.com>
 
        * tracepoint.c (all_tracepoint_actions): Rename from
index b066da7d6018c4a1007681cce0e964c607ec9c69..c7d405c0d0bd6d44c83c388caee485406968f273 100644 (file)
@@ -426,8 +426,9 @@ reset_command_nest_depth (void)
    via while_command or if_command.  Inner levels of 'if' and 'while'
    are dealt with directly.  Therefore we can use these functions
    to determine whether the command has been printed already or not.  */
+ATTRIBUTE_PRINTF (1, 2)
 void
-print_command_trace (const char *cmd)
+print_command_trace (const char *fmt, ...)
 {
   int i;
 
@@ -443,7 +444,12 @@ print_command_trace (const char *cmd)
   for (i=0; i < command_nest_depth; i++)
     printf_filtered ("+");
 
-  printf_filtered ("%s\n", cmd);
+  va_list args;
+
+  va_start (args, fmt);
+  vprintf_filtered (fmt, args);
+  va_end (args);
+  puts_filtered ("\n");
 }
 
 /* Helper for execute_control_command.  */
@@ -490,11 +496,7 @@ execute_control_command_1 (struct command_line *cmd)
 
     case while_control:
       {
-       int len = strlen (cmd->line) + 7;
-       char *buffer = (char *) alloca (len);
-
-       xsnprintf (buffer, len, "while %s", cmd->line);
-       print_command_trace (buffer);
+       print_command_trace ("while %s", cmd->line);
 
        /* Parse the loop control expression for the while statement.  */
        std::string new_line = insert_user_defined_cmd_args (cmd->line);
@@ -555,11 +557,7 @@ execute_control_command_1 (struct command_line *cmd)
 
     case if_control:
       {
-       int len = strlen (cmd->line) + 4;
-       char *buffer = (char *) alloca (len);
-
-       xsnprintf (buffer, len, "if %s", cmd->line);
-       print_command_trace (buffer);
+       print_command_trace ("if %s", cmd->line);
 
        /* Parse the conditional for the if statement.  */
        std::string new_line = insert_user_defined_cmd_args (cmd->line);
index 58dede2342fa3fbba30c39c166e329cff4d4936d..10b6c177892adb96c80f75dd0a55d5bdde9e46c0 100644 (file)
@@ -148,7 +148,8 @@ extern std::string insert_user_defined_cmd_args (const char *line);
 
 /* Exported to top.c */
 
-extern void print_command_trace (const char *cmd);
+extern void print_command_trace (const char *cmd, ...)
+  ATTRIBUTE_PRINTF (1, 2);
 
 /* Exported to event-top.c */
 
index d9d4639a1b6c28c1c1a23e891007fde7798cecf4..07b386dacbab2e37644c7ffec648d16d9396111a 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -571,7 +571,7 @@ execute_command (const char *p, int from_tty)
       line = p;
 
       /* If trace-commands is set then this will print this command.  */
-      print_command_trace (p);
+      print_command_trace ("%s", p);
 
       c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
       p = cmd;