diff options
author | Christian Biesinger <cbiesinger@google.com> | 2019-10-01 13:41:58 -0500 |
---|---|---|
committer | Christian Biesinger <cbiesinger@google.com> | 2019-10-28 12:20:13 -0500 |
commit | 87f34879e5339be458505ca85f70cff346295140 (patch) | |
tree | 29821d4b4a5077e384f42d2e82c0656c61a438ab | |
parent | 1ee3542c0a3830cac933ae56cc5f29e9c3f7c6ca (diff) | |
download | gdb-87f34879e5339be458505ca85f70cff346295140.zip gdb-87f34879e5339be458505ca85f70cff346295140.tar.gz gdb-87f34879e5339be458505ca85f70cff346295140.tar.bz2 |
Add a string_view version of startswith
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:
https://sourceware.org/ml/gdb-patches/2019-10/msg00030.html
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/125
gdb/ChangeLog:
2019-10-28 Christian Biesinger <cbiesinger@google.com>
* gdbsupport/common-utils.h (startswith): Add an overloaded version
that takes gdb::string_view arguments.
Change-Id: I5389855de2fd70e7065a789a79374b0693651b71
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbsupport/common-utils.h | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index edf7c34..7059623 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-10-28 Christian Biesinger <cbiesinger@google.com> + + * gdbsupport/common-utils.h (startswith): Add an overloaded version + that takes gdb::string_view arguments. + 2019-10-26 Tom de Vries <tdevries@suse.de> * aarch64-linux-tdep.c: Fix typos in comments. diff --git a/gdb/gdbsupport/common-utils.h b/gdb/gdbsupport/common-utils.h index e96fc21..23bf354 100644 --- a/gdb/gdbsupport/common-utils.h +++ b/gdb/gdbsupport/common-utils.h @@ -43,6 +43,8 @@ #endif #endif +#include "gdb_string_view.h" + /* xmalloc(), xrealloc() and xcalloc() have already been declared in "libiberty.h". */ @@ -118,6 +120,16 @@ 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 |