aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-02-21 18:13:17 +0000
committerTom Tromey <tromey@redhat.com>2011-02-21 18:13:17 +0000
commite9cafbccd26b045ba6a3db2fde83dd33228e473b (patch)
tree2ff85b840a2849b1564202ebac2e3d2f17b541ce
parentf67fd822d03bd263034b549d89d98e98356ff194 (diff)
downloadgdb-e9cafbccd26b045ba6a3db2fde83dd33228e473b.zip
gdb-e9cafbccd26b045ba6a3db2fde83dd33228e473b.tar.gz
gdb-e9cafbccd26b045ba6a3db2fde83dd33228e473b.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog24
-rw-r--r--gdb/Makefile.in10
-rw-r--r--gdb/breakpoint.c210
-rw-r--r--gdb/breakpoint.h4
-rw-r--r--gdb/cli/cli-dump.c11
-rw-r--r--gdb/cli/cli-dump.h2
-rw-r--r--gdb/cli/cli-utils.c186
-rw-r--r--gdb/cli/cli-utils.h58
-rw-r--r--gdb/printcmd.c11
-rw-r--r--gdb/reverse.c1
10 files changed, 296 insertions, 221 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 89f74ac..5fde603 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 8d1cc26..ee79a14 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -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
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 27fbcc6..065efa6 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -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;
-/* *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,
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index a3927cf..a0fea21 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -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,
diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c
index 95c1b34..e288ee6 100644
--- a/gdb/cli/cli-dump.c
+++ b/gdb/cli/cli-dump.c
@@ -32,21 +32,12 @@
#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')
diff --git a/gdb/cli/cli-dump.h b/gdb/cli/cli-dump.h
index f4eae6c..384aa48 100644
--- a/gdb/cli/cli-dump.h
+++ b/gdb/cli/cli-dump.h
@@ -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
index 0000000..0c98ca9
--- /dev/null
+++ b/gdb/cli/cli-utils.c
@@ -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
index 0000000..e79b82e
--- /dev/null
+++ b/gdb/cli/cli-utils.h
@@ -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 */
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index d89004b..ebca5a3 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -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);
diff --git a/gdb/reverse.c b/gdb/reverse.c
index d501ceb..7169cc3 100644
--- a/gdb/reverse.c
+++ b/gdb/reverse.c
@@ -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"