aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/strings.c
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-07-13 10:17:19 +0100
committerGitHub <noreply@github.com>2023-07-13 10:17:19 +0100
commit516b173780e39de3ce1e4525f0a8f0ff250c992b (patch)
treeafd6b0148b9a02e1e33859aa437b9348024ec5a3 /src/nvim/strings.c
parent998bebc15e9de70b3daaaa5900e974dea5abda3e (diff)
downloadrneovim-516b173780e39de3ce1e4525f0a8f0ff250c992b.tar.gz
rneovim-516b173780e39de3ce1e4525f0a8f0ff250c992b.tar.bz2
rneovim-516b173780e39de3ce1e4525f0a8f0ff250c992b.zip
perf(rtp): reduce rtp scans (#24191)
* perf(rtp): reduce rtp scans Problem: Scanning the filesystem is expensive and particularly affects startuptime. Solution: Reduce the amount of redundant directory scans by relying less on glob patterns and handle vim and lua sourcing lower down.
Diffstat (limited to 'src/nvim/strings.c')
-rw-r--r--src/nvim/strings.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/nvim/strings.c b/src/nvim/strings.c
index 6fe2fd8ff3..52a803a3cc 100644
--- a/src/nvim/strings.c
+++ b/src/nvim/strings.c
@@ -436,6 +436,25 @@ char *vim_strchr(const char *const string, const int c)
}
}
+/// Test if "str" ends with "suffix"
+///
+/// @param[in] str
+/// @param[in] suffix to match
+///
+/// @return [allocated] Copy of the string.
+bool str_ends_with(const char *str, const char *suffix)
+{
+ if (!str || !suffix) {
+ return false;
+ }
+ size_t lenstr = strlen(str);
+ size_t lensuffix = strlen(suffix);
+ if (lensuffix > lenstr) {
+ return false;
+ }
+ return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
+}
+
// Sort an array of strings.
#ifdef INCLUDE_GENERATED_DECLARATIONS