diff mbox

Add a string_view version of startswith

Message ID 20191001191743.239208-1-cbiesinger@google.com
State New
Headers show

Commit Message

Doug Evans via gdb-patches Oct. 1, 2019, 7:17 p.m. UTC
[Thanks Pedro, both comments are fixed now. Note that this patch depends on

Makes sure that the string is longer than prefix, so that strncmp will
do the right thing even if the string is not null-terminated.

For use in my string_view conversion patch:


2019-10-01  Christian Biesinger  <cbiesinger@google.com>

	* gdbsupport/common-utils.h (startswith): Add an overloaded version
	that takes gdb::string_view arguments.
 gdb/gdbsupport/common-utils.h | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
diff mbox


diff --git a/gdb/gdbsupport/common-utils.h b/gdb/gdbsupport/common-utils.h
index a5312cb0c4..4a20a665cc 100644
--- a/gdb/gdbsupport/common-utils.h
+++ b/gdb/gdbsupport/common-utils.h
@@ -23,6 +23,7 @@ 
 #include <string>
 #include <vector>
+#include "gdb_string_view.h"
 #include "poison.h"
 /* If possible, define FUNCTION_NAME, a macro containing the name of
@@ -110,15 +111,25 @@  std::string extract_string_maybe_quoted (const char **arg);
 extern char *safe_strerror (int);
-/* Return non-zero if the start of STRING matches PATTERN, zero
+/* Return true if the start of STRING matches PATTERN, false
    otherwise.  */
-static inline int
+static inline bool
 startswith (const char *string, const char *pattern)
   return strncmp (string, pattern, strlen (pattern)) == 0;
+/* Version of startswith that takes string_view arguments.  See comment
+   above.  */
+static inline bool
+startswith (gdb::string_view string, gdb::string_view pattern)
+  return (string.length() >= pattern.length ()
+	  && strncmp (string.data (), pattern.data (), pattern.length ()) == 0);
 ULONGEST strtoulst (const char *num, const char **trailer, int base);
 /* Skip leading whitespace characters in INP, returning an updated