diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-07-13 10:17:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-13 10:17:19 +0100 |
commit | 516b173780e39de3ce1e4525f0a8f0ff250c992b (patch) | |
tree | afd6b0148b9a02e1e33859aa437b9348024ec5a3 /src/nvim/strings.c | |
parent | 998bebc15e9de70b3daaaa5900e974dea5abda3e (diff) | |
download | rneovim-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.c | 19 |
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 |