#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);
}
}
+/* 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 ()
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