* reverse.c: Include cli-utils.h.
authorTom Tromey <tromey@redhat.com>
Mon, 21 Feb 2011 18:13:17 +0000 (18:13 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 21 Feb 2011 18:13:17 +0000 (18:13 +0000)
* printcmd.c: Include cli-utils.h.
(string_printf): Use skip_spaces.
* cli/cli-utils.h: New file.
* cli/cli-utils.c: New file.
* cli/cli-dump.h (skip_spaces): Move to cli-utils.h.
* cli/cli-dump.c (skip_spaces): Move to cli-utils.c.
* breakpoint.h (get_number, get_number_or_range): Move to
cli-utils.h.
* breakpoint.c: Include cli-utils.h.
(get_number_trailer, get_number, get_number_or_range)
(ep_skip_leading_whitespace): Move to cli-utils.c.
(create_breakpoint_sal, find_condition_and_thread)
(decode_static_tracepoint_spec, watch_command_1)
(watch_maybe_just_location, ep_parse_optional_if_clause)
(catch_fork_command_1, catch_exec_command_1)
(catch_syscall_command_1): Use skip_spaces, skip_to_space.
* Makefile.in (SUBDIR_CLI_OBS): Add cli-utils.o.
(SUBDIR_CLI_SRCS): Add cli-utils.c.
(HFILES_NO_SRCDIR): Add cli-utils.h.
(cli-utils.o): New target.

gdb/ChangeLog
gdb/Makefile.in
gdb/breakpoint.c
gdb/breakpoint.h
gdb/cli/cli-dump.c
gdb/cli/cli-dump.h
gdb/cli/cli-utils.c [new file with mode: 0644]
gdb/cli/cli-utils.h [new file with mode: 0644]
gdb/printcmd.c
gdb/reverse.c

index 89f74ac..5fde603 100644 (file)
@@ -1,3 +1,27 @@
+2011-02-21  Tom Tromey  <tromey@redhat.com>
+
+       * reverse.c: Include cli-utils.h.
+       * printcmd.c: Include cli-utils.h.
+       (string_printf): Use skip_spaces.
+       * cli/cli-utils.h: New file.
+       * cli/cli-utils.c: New file.
+       * cli/cli-dump.h (skip_spaces): Move to cli-utils.h.
+       * cli/cli-dump.c (skip_spaces): Move to cli-utils.c.
+       * breakpoint.h (get_number, get_number_or_range): Move to
+       cli-utils.h.
+       * breakpoint.c: Include cli-utils.h.
+       (get_number_trailer, get_number, get_number_or_range)
+       (ep_skip_leading_whitespace): Move to cli-utils.c.
+       (create_breakpoint_sal, find_condition_and_thread)
+       (decode_static_tracepoint_spec, watch_command_1)
+       (watch_maybe_just_location, ep_parse_optional_if_clause)
+       (catch_fork_command_1, catch_exec_command_1)
+       (catch_syscall_command_1): Use skip_spaces, skip_to_space.
+       * Makefile.in (SUBDIR_CLI_OBS): Add cli-utils.o.
+       (SUBDIR_CLI_SRCS): Add cli-utils.c.
+       (HFILES_NO_SRCDIR): Add cli-utils.h.
+       (cli-utils.o): New target.
+
 2011-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>
 
        * remote.c (remote_close): Reset INFERIOR_PTID to NULL_PTID
index 8d1cc26..ee79a14 100644 (file)
@@ -193,12 +193,12 @@ SUBDIR_CLI_OBS = \
        cli-dump.o \
        cli-decode.o cli-script.o cli-cmds.o cli-setshow.o \
        cli-logging.o \
-       cli-interp.o
+       cli-interp.o cli-utils.o
 SUBDIR_CLI_SRCS = \
        cli/cli-dump.c \
        cli/cli-decode.c cli/cli-script.c cli/cli-cmds.c cli/cli-setshow.c \
        cli/cli-logging.c \
-       cli/cli-interp.c
+       cli/cli-interp.c cli/cli-utils.c
 SUBDIR_CLI_DEPS =
 SUBDIR_CLI_LDFLAGS=
 SUBDIR_CLI_CFLAGS=
@@ -767,7 +767,7 @@ exec.h m32r-tdep.h osabi.h gdbcore.h solib-som.h \
 i386bsd-nat.h xml-support.h xml-tdesc.h alphabsd-tdep.h gdb_obstack.h \
 ia64-tdep.h ada-lang.h varobj.h frv-tdep.h nto-tdep.h serial.h \
 c-lang.h d-lang.h frame.h event-loop.h block.h cli/cli-setshow.h       \
-cli/cli-decode.h cli/cli-cmds.h cli/cli-dump.h \
+cli/cli-decode.h cli/cli-cmds.h cli/cli-dump.h cli/cli-utils.h \
 cli/cli-script.h macrotab.h symtab.h version.h gnulib/wchar.in.h \
 gnulib/string.in.h gnulib/str-two-way.h \
 gnulib/stdint.in.h remote.h gdb.h sparc-nat.h gdbserver/win32-low.h \
@@ -1756,6 +1756,10 @@ cli-setshow.o: $(srcdir)/cli/cli-setshow.c
        $(COMPILE) $(srcdir)/cli/cli-setshow.c
        $(POSTCOMPILE)
 
+cli-utils.o: $(srcdir)/cli/cli-utils.c
+       $(COMPILE) $(srcdir)/cli/cli-utils.c
+       $(POSTCOMPILE)
+
 
 #
 # GDBTK sub-directory
index 27fbcc6..065efa6 100644 (file)
@@ -62,6 +62,7 @@
 #include "jit.h"
 #include "xml-syscall.h"
 #include "parser-defs.h"
+#include "cli/cli-utils.h"
 
 /* readline include files */
 #include "readline/readline.h"
@@ -142,8 +143,6 @@ static void commands_command (char *, int);
 
 static void condition_command (char *, int);
 
-static int get_number_trailer (char **, int);
-
 typedef enum
   {
     mark_inserted,
@@ -185,8 +184,6 @@ static void catch_exception_command_1 (enum exception_event_kind ex_event,
 
 static void tcatch_command (char *arg, int from_tty);
 
-static void ep_skip_leading_whitespace (char **s);
-
 static void detach_single_step_breakpoints (void);
 
 static int single_step_breakpoint_inserted_here_p (struct address_space *,
@@ -553,159 +550,6 @@ int default_breakpoint_line;
 struct program_space *default_breakpoint_pspace;
 
 \f
-/* *PP is a string denoting a breakpoint.  Get the number of the
-   breakpoint.  Advance *PP after the string and any trailing
-   whitespace.
-
-   Currently the string can either be a number or "$" followed by the
-   name of a convenience variable.  Making it an expression wouldn't
-   work well for map_breakpoint_numbers (e.g. "4 + 5 + 6").
-
-   TRAILER is a character which can be found after the number; most
-   commonly this is `-'.  If you don't want a trailer, use \0.  */
-
-static int
-get_number_trailer (char **pp, int trailer)
-{
-  int retval = 0;      /* default */
-  char *p = *pp;
-
-  if (*p == '$')
-    {
-      /* Make a copy of the name, so we can null-terminate it
-         to pass to lookup_internalvar().  */
-      char *varname;
-      char *start = ++p;
-      LONGEST val;
-
-      while (isalnum (*p) || *p == '_')
-       p++;
-      varname = (char *) alloca (p - start + 1);
-      strncpy (varname, start, p - start);
-      varname[p - start] = '\0';
-      if (get_internalvar_integer (lookup_internalvar (varname), &val))
-       retval = (int) val;
-      else
-       {
-         printf_filtered (_("Convenience variable must "
-                            "have integer value.\n"));
-         retval = 0;
-       }
-    }
-  else
-    {
-      if (*p == '-')
-       ++p;
-      while (*p >= '0' && *p <= '9')
-       ++p;
-      if (p == *pp)
-       /* There is no number here.  (e.g. "cond a == b").  */
-       {
-         /* Skip non-numeric token.  */
-         while (*p && !isspace((int) *p))
-           ++p;
-         /* Return zero, which caller must interpret as error.  */
-         retval = 0;
-       }
-      else
-       retval = atoi (*pp);
-    }
-  if (!(isspace (*p) || *p == '\0' || *p == trailer))
-    {
-      /* Trailing junk: return 0 and let caller print error msg.  */
-      while (!(isspace (*p) || *p == '\0' || *p == trailer))
-       ++p;
-      retval = 0;
-    }
-  while (isspace (*p))
-    p++;
-  *pp = p;
-  return retval;
-}
-
-
-/* Like get_number_trailer, but don't allow a trailer.  */
-int
-get_number (char **pp)
-{
-  return get_number_trailer (pp, '\0');
-}
-
-/* Parse a number or a range.
-   A number will be of the form handled by get_number.
-   A range will be of the form <number1> - <number2>, and 
-   will represent all the integers between number1 and number2,
-   inclusive.
-
-   While processing a range, this fuction is called iteratively;
-   At each call it will return the next value in the range.
-
-   At the beginning of parsing a range, the char pointer PP will
-   be advanced past <number1> and left pointing at the '-' token.
-   Subsequent calls will not advance the pointer until the range
-   is completed.  The call that completes the range will advance
-   pointer PP past <number2>.  */
-
-int
-get_number_or_range (char **pp)
-{
-  static int last_retval, end_value;
-  static char *end_ptr;
-  static int in_range = 0;
-
-  if (**pp != '-')
-    {
-      /* Default case: pp is pointing either to a solo number, 
-        or to the first number of a range.  */
-      last_retval = get_number_trailer (pp, '-');
-      if (**pp == '-')
-       {
-         char **temp;
-
-         /* This is the start of a range (<number1> - <number2>).
-            Skip the '-', parse and remember the second number,
-            and also remember the end of the final token.  */
-
-         temp = &end_ptr; 
-         end_ptr = *pp + 1; 
-         while (isspace ((int) *end_ptr))
-           end_ptr++;  /* skip white space */
-         end_value = get_number (temp);
-         if (end_value < last_retval) 
-           {
-             error (_("inverted range"));
-           }
-         else if (end_value == last_retval)
-           {
-             /* Degenerate range (number1 == number2).  Advance the
-                token pointer so that the range will be treated as a
-                single number.  */ 
-             *pp = end_ptr;
-           }
-         else
-           in_range = 1;
-       }
-    }
-  else if (! in_range)
-    error (_("negative value"));
-  else
-    {
-      /* pp points to the '-' that betokens a range.  All
-        number-parsing has already been done.  Return the next
-        integer value (one greater than the saved previous value).
-        Do not advance the token pointer 'pp' until the end of range
-        is reached.  */
-
-      if (++last_retval == end_value)
-       {
-         /* End of range reached; advance token pointer.  */
-         *pp = end_ptr;
-         in_range = 0;
-       }
-    }
-  return last_retval;
-}
-
 /* Return the breakpoint with the specified number, or NULL
    if the number does not refer to an existing breakpoint.  */
 
@@ -7383,12 +7227,9 @@ create_breakpoint_sal (struct gdbarch *gdbarch,
                  char *marker_str;
                  int i;
 
-                 while (*p == ' ' || *p == '\t')
-                   p++;
+                 p = skip_spaces (p);
 
-                 endp = p;
-                 while (*endp != ' ' && *endp != '\t' && *endp != '\0')
-                   endp++;
+                 endp = skip_to_space (p);
 
                  marker_str = savestring (p, endp - p);
                  b->static_trace_marker_id = marker_str;
@@ -7783,13 +7624,9 @@ find_condition_and_thread (char *tok, CORE_ADDR pc,
       char *cond_start = NULL;
       char *cond_end = NULL;
 
-      while (*tok == ' ' || *tok == '\t')
-       tok++;
-      
-      end_tok = tok;
+      tok = skip_spaces (tok);
       
-      while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
-       end_tok++;
+      end_tok = skip_to_space (tok);
       
       toklen = end_tok - tok;
       
@@ -7848,12 +7685,9 @@ decode_static_tracepoint_spec (char **arg_p)
   char *marker_str;
   int i;
 
-  while (*p == ' ' || *p == '\t')
-    p++;
+  p = skip_spaces (p);
 
-  endp = p;
-  while (*endp != ' ' && *endp != '\t' && *endp != '\0')
-    endp++;
+  endp = skip_to_space (p);
 
   marker_str = savestring (p, endp - p);
   old_chain = make_cleanup (xfree, marker_str);
@@ -8618,13 +8452,8 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
   else if (val != NULL)
     release_value (val);
 
-  tok = arg;
-  while (*tok == ' ' || *tok == '\t')
-    tok++;
-  end_tok = tok;
-
-  while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
-    end_tok++;
+  tok = skip_spaces (arg);
+  end_tok = skip_to_space (tok);
 
   toklen = end_tok - tok;
   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
@@ -8908,7 +8737,7 @@ watch_maybe_just_location (char *arg, int accessflag, int from_tty)
       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
          || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
     {
-      ep_skip_leading_whitespace (&arg);
+      arg = skip_spaces (arg);
       just_location = 1;
     }
 
@@ -9065,15 +8894,6 @@ until_break_command (char *arg, int from_tty, int anywhere)
     do_cleanups (old_chain);
 }
 
-static void
-ep_skip_leading_whitespace (char **s)
-{
-  if ((s == NULL) || (*s == NULL))
-    return;
-  while (isspace (**s))
-    *s += 1;
-}
-
 /* This function attempts to parse an optional "if <cond>" clause
    from the arg string.  If one is not found, it returns NULL.
 
@@ -9095,7 +8915,7 @@ ep_parse_optional_if_clause (char **arg)
 
   /* Skip any extra leading whitespace, and record the start of the
      condition string.  */
-  ep_skip_leading_whitespace (arg);
+  *arg = skip_spaces (*arg);
   cond_string = *arg;
 
   /* Assume that the condition occupies the remainder of the arg
@@ -9130,7 +8950,7 @@ catch_fork_command_1 (char *arg, int from_tty,
 
   if (!arg)
     arg = "";
-  ep_skip_leading_whitespace (&arg);
+  arg = skip_spaces (arg);
 
   /* The allowed syntax is:
      catch [v]fork
@@ -9174,7 +8994,7 @@ catch_exec_command_1 (char *arg, int from_tty,
 
   if (!arg)
     arg = "";
-  ep_skip_leading_whitespace (&arg);
+  arg = skip_spaces (arg);
 
   /* The allowed syntax is:
      catch exec
@@ -9324,7 +9144,7 @@ catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
 
   if (!arg)
     arg = "";
-  ep_skip_leading_whitespace (&arg);
+  arg = skip_spaces (arg);
 
   cond_string = ep_parse_optional_if_clause (&arg);
 
@@ -9514,7 +9334,7 @@ this architeture yet."));
 
   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
 
-  ep_skip_leading_whitespace (&arg);
+  arg = skip_spaces (arg);
 
   /* We need to do this first "dummy" translation in order
      to get the syscall XML file loaded or, most important,
index a3927cf..a0fea21 100644 (file)
@@ -1039,10 +1039,6 @@ extern enum command_control_type commands_from_control_command
 
 extern void clear_breakpoint_hit_counts (void);
 
-extern int get_number (char **);
-
-extern int get_number_or_range (char **);
-
 extern struct breakpoint *get_breakpoint (int num);
 
 /* The following are for displays, which aren't really breakpoints,
index 95c1b34..e288ee6 100644 (file)
 #include "target.h"
 #include "readline/readline.h"
 #include "gdbcore.h"
+#include "cli/cli-utils.h"
 
 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
 
 
 char *
-skip_spaces (char *chp)
-{
-  if (chp == NULL)
-    return NULL;
-  while (isspace (*chp))
-    chp++;
-  return chp;
-}
-
-char *
 scan_expression_with_cleanup (char **cmd, const char *def)
 {
   if ((*cmd) == NULL || (**cmd) == '\0')
index f4eae6c..384aa48 100644 (file)
@@ -32,6 +32,4 @@ extern char *scan_expression_with_cleanup (char **cmd, const char *defname);
 
 extern FILE *fopen_with_cleanup (const char *filename, const char *mode);
 
-extern char *skip_spaces (char *inp);
-
 #endif
diff --git a/gdb/cli/cli-utils.c b/gdb/cli/cli-utils.c
new file mode 100644 (file)
index 0000000..0c98ca9
--- /dev/null
@@ -0,0 +1,186 @@
+/* CLI utilities.
+
+   Copyright (c) 2011 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "cli/cli-utils.h"
+#include "gdb_string.h"
+#include "value.h"
+
+#include <ctype.h>
+
+/* *PP is a string denoting a number.  Get the number of the.  Advance
+   *PP after the string and any trailing whitespace.
+
+   Currently the string can either be a number or "$" followed by the
+   name of a convenience variable.
+
+   TRAILER is a character which can be found after the number; most
+   commonly this is `-'.  If you don't want a trailer, use \0.  */
+
+static int
+get_number_trailer (char **pp, int trailer)
+{
+  int retval = 0;      /* default */
+  char *p = *pp;
+
+  if (*p == '$')
+    {
+      /* Make a copy of the name, so we can null-terminate it
+         to pass to lookup_internalvar().  */
+      char *varname;
+      char *start = ++p;
+      LONGEST val;
+
+      while (isalnum (*p) || *p == '_')
+       p++;
+      varname = (char *) alloca (p - start + 1);
+      strncpy (varname, start, p - start);
+      varname[p - start] = '\0';
+      if (get_internalvar_integer (lookup_internalvar (varname), &val))
+       retval = (int) val;
+      else
+       {
+         printf_filtered (_("Convenience variable must "
+                            "have integer value.\n"));
+         retval = 0;
+       }
+    }
+  else
+    {
+      if (*p == '-')
+       ++p;
+      while (*p >= '0' && *p <= '9')
+       ++p;
+      if (p == *pp)
+       /* There is no number here.  (e.g. "cond a == b").  */
+       {
+         /* Skip non-numeric token.  */
+         while (*p && !isspace((int) *p))
+           ++p;
+         /* Return zero, which caller must interpret as error.  */
+         retval = 0;
+       }
+      else
+       retval = atoi (*pp);
+    }
+  if (!(isspace (*p) || *p == '\0' || *p == trailer))
+    {
+      /* Trailing junk: return 0 and let caller print error msg.  */
+      while (!(isspace (*p) || *p == '\0' || *p == trailer))
+       ++p;
+      retval = 0;
+    }
+  p = skip_spaces (p);
+  *pp = p;
+  return retval;
+}
+
+/* See documentation in cli-utils.h.  */
+
+int
+get_number (char **pp)
+{
+  return get_number_trailer (pp, '\0');
+}
+
+/* See documentation in cli-utils.h.  */
+
+int
+get_number_or_range (char **pp)
+{
+  static int last_retval, end_value;
+  static char *end_ptr;
+  static int in_range = 0;
+
+  if (**pp != '-')
+    {
+      /* Default case: pp is pointing either to a solo number, 
+        or to the first number of a range.  */
+      last_retval = get_number_trailer (pp, '-');
+      if (**pp == '-')
+       {
+         char **temp;
+
+         /* This is the start of a range (<number1> - <number2>).
+            Skip the '-', parse and remember the second number,
+            and also remember the end of the final token.  */
+
+         temp = &end_ptr; 
+         end_ptr = *pp + 1; 
+         while (isspace ((int) *end_ptr))
+           end_ptr++;  /* skip white space */
+         end_value = get_number (temp);
+         if (end_value < last_retval) 
+           {
+             error (_("inverted range"));
+           }
+         else if (end_value == last_retval)
+           {
+             /* Degenerate range (number1 == number2).  Advance the
+                token pointer so that the range will be treated as a
+                single number.  */ 
+             *pp = end_ptr;
+           }
+         else
+           in_range = 1;
+       }
+    }
+  else if (! in_range)
+    error (_("negative value"));
+  else
+    {
+      /* pp points to the '-' that betokens a range.  All
+        number-parsing has already been done.  Return the next
+        integer value (one greater than the saved previous value).
+        Do not advance the token pointer 'pp' until the end of range
+        is reached.  */
+
+      if (++last_retval == end_value)
+       {
+         /* End of range reached; advance token pointer.  */
+         *pp = end_ptr;
+         in_range = 0;
+       }
+    }
+  return last_retval;
+}
+
+/* See documentation in cli-utils.h.  */
+
+char *
+skip_spaces (char *chp)
+{
+  if (chp == NULL)
+    return NULL;
+  while (*chp && isspace (*chp))
+    chp++;
+  return chp;
+}
+
+/* See documentation in cli-utils.h.  */
+
+char *
+skip_to_space (char *chp)
+{
+  if (chp == NULL)
+    return NULL;
+  while (*chp && !isspace (*chp))
+    chp++;
+  return chp;
+}
diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
new file mode 100644 (file)
index 0000000..e79b82e
--- /dev/null
@@ -0,0 +1,58 @@
+/* CLI utilities.
+
+   Copyright (c) 2011 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef CLI_UTILS_H
+#define CLI_UTILS_H
+
+/* *PP is a string denoting a number.  Get the number of the.  Advance
+   *PP after the string and any trailing whitespace.
+
+   Currently the string can either be a number or "$" followed by the
+   name of a convenience variable.  */
+
+extern int get_number (char **);
+
+/* Parse a number or a range.
+   A number will be of the form handled by get_number.
+   A range will be of the form <number1> - <number2>, and 
+   will represent all the integers between number1 and number2,
+   inclusive.
+
+   While processing a range, this fuction is called iteratively;
+   At each call it will return the next value in the range.
+
+   At the beginning of parsing a range, the char pointer PP will
+   be advanced past <number1> and left pointing at the '-' token.
+   Subsequent calls will not advance the pointer until the range
+   is completed.  The call that completes the range will advance
+   pointer PP past <number2>.  */
+
+extern int get_number_or_range (char **);
+
+/* Skip leading whitespace characters in INP, returning an updated
+   pointer.  If INP is NULL, return NULL.  */
+
+extern char *skip_spaces (char *inp);
+
+/* Skip leading non-whitespace characters in INP, returning an updated
+   pointer.  If INP is NULL, return NULL.  */
+
+extern char *skip_to_space (char *inp);
+
+#endif /* CLI_UTILS_H */
index d89004b..ebca5a3 100644 (file)
@@ -50,6 +50,7 @@
 #include "charset.h"
 #include "arch-utils.h"
 #include "printcmd.h"
+#include "cli/cli-utils.h"
 
 #ifdef TUI
 #include "tui/tui.h"           /* For tui_active et al.   */
@@ -1983,9 +1984,7 @@ string_printf (char *arg, struct ui_file *stream, printf_callback callback,
   if (s == 0)
     error_no_arg (_("format-control string and values to print"));
 
-  /* Skip white space before format string.  */
-  while (*s == ' ' || *s == '\t')
-    s++;
+  s = skip_spaces (s);
 
   /* A format string should follow, enveloped in double quotes.  */
   if (*s++ != '"')
@@ -2049,16 +2048,14 @@ string_printf (char *arg, struct ui_file *stream, printf_callback callback,
   /* Skip over " and following space and comma.  */
   s++;
   *f++ = '\0';
-  while (*s == ' ' || *s == '\t')
-    s++;
+  s = skip_spaces (s);
 
   if (*s != ',' && *s != 0)
     error (_("Invalid argument syntax"));
 
   if (*s == ',')
     s++;
-  while (*s == ' ' || *s == '\t')
-    s++;
+  s = skip_spaces (s);
 
   /* Need extra space for the '\0's.  Doubling the size is sufficient.  */
   substrings = alloca (strlen (string) * 2);
index d501ceb..7169cc3 100644 (file)
@@ -24,6 +24,7 @@
 #include "top.h"
 #include "cli/cli-cmds.h"
 #include "cli/cli-decode.h"
+#include "cli/cli-utils.h"
 #include "inferior.h"
 #include "regcache.h"