mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
gdb: new extract_single_filename_arg helper function
This commit is in preparation for the next few commits, this commit adds a new function extract_single_filename_arg. This new function will be used to convert GDB commands that expect a single filename argument to have these commands take a possibly quoted or escaped string. There's no use of the new function in this commit, for that see the following commits.
This commit is contained in:
parent
67b8e30af9
commit
1217ae6726
18
gdb/utils.c
18
gdb/utils.c
@ -80,6 +80,7 @@
|
||||
#include "gdbsupport/buildargv.h"
|
||||
#include "pager.h"
|
||||
#include "run-on-main-thread.h"
|
||||
#include "gdbsupport/gdb_tilde_expand.h"
|
||||
|
||||
void (*deprecated_error_begin_hook) (void);
|
||||
|
||||
@ -3667,6 +3668,23 @@ copy_bitwise (gdb_byte *dest, ULONGEST dest_offset,
|
||||
}
|
||||
}
|
||||
|
||||
/* See utils.h. */
|
||||
|
||||
std::string
|
||||
extract_single_filename_arg (const char *args)
|
||||
{
|
||||
if (args == nullptr)
|
||||
return {};
|
||||
|
||||
std::string filename = extract_string_maybe_quoted (&args);
|
||||
args = skip_spaces (args);
|
||||
if (*args != '\0')
|
||||
error (_("Junk after filename \"%s\": %s"), filename.c_str (), args);
|
||||
if (!filename.empty ())
|
||||
filename = gdb_tilde_expand (filename.c_str ());
|
||||
return filename;
|
||||
}
|
||||
|
||||
#if GDB_SELF_TEST
|
||||
static void
|
||||
test_assign_set_return_if_changed ()
|
||||
|
14
gdb/utils.h
14
gdb/utils.h
@ -371,6 +371,20 @@ assign_return_if_changed (T &lval, const T &val)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ARG is an argument string as passed to a GDB command which is expected
|
||||
to contain a single, possibly quoted, filename argument. Extract the
|
||||
filename and return it as a string. If the filename is quoted then the
|
||||
quotes will have been removed. If the filename is not quoted then any
|
||||
escaping within the filename will have been removed.
|
||||
|
||||
If there is any content in ARG after the filename then an error will be
|
||||
thrown complaining about the extra content.
|
||||
|
||||
If there is no filename in ARG, or if ARG is nullptr, then an empty
|
||||
string will be returned. */
|
||||
|
||||
extern std::string extract_single_filename_arg (const char *arg);
|
||||
|
||||
/* A class that can be used to intercept warnings. A class is used
|
||||
here, rather than a gdb::function_view because it proved difficult
|
||||
to use a function view in conjunction with ATTRIBUTE_PRINTF in a
|
||||
|
Loading…
Reference in New Issue
Block a user