* cli/cli-setshow.c (do_setshow_command): Use dynamically sized buffer
authorUlrich Weigand <uweigand@de.ibm.com>
Sat, 17 Nov 2007 00:57:01 +0000 (00:57 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Sat, 17 Nov 2007 00:57:01 +0000 (00:57 +0000)
to construct error message if no argument was supplied.

gdb/ChangeLog
gdb/cli/cli-setshow.c

index 90ca1844aa5b9f7e1d45a6a58bc52dc8d4003f1d..e7bd42dae981e1077bea4860c3eb4ef65aa4ef51 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-16  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * cli/cli-setshow.c (do_setshow_command): Use dynamically sized buffer
+       to construct error message if no argument was supplied.
+
 2007-11-16  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * i386nbsd-tdep.c (i386nbsd_aout_supply_regset): Remove.
index 54f2bd41a5b48ec40cb38a3706961f4edc597cd4..6d62a23d0423a9c2218e0ab2b4f8c8f81e93db20 100644 (file)
@@ -242,16 +242,22 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
            /* if no argument was supplied, print an informative error message */
            if (arg == NULL)
              {
-               char msg[1024];
-               strcpy (msg, "Requires an argument. Valid arguments are ");
+               char *msg;
+               int msg_len = 0;
+               for (i = 0; c->enums[i]; i++)
+                 msg_len += strlen (c->enums[i]) + 2;
+
+               msg = xmalloc (msg_len);
+               *msg = '\0';
+               make_cleanup (xfree, msg);
+               
                for (i = 0; c->enums[i]; i++)
                  {
                    if (i != 0)
                      strcat (msg, ", ");
                    strcat (msg, c->enums[i]);
                  }
-               strcat (msg, ".");
-               error (("%s"), msg);
+               error (_("Requires an argument. Valid arguments are %s."), msg);
              }
 
            p = strchr (arg, ' ');