diff options
author | Jeff King <peff@peff.net> | 2014-06-30 12:58:51 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-30 13:43:17 -0700 |
commit | 26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c (patch) | |
tree | 168d00b14d97061b2db5b1d068ec01870f2ce3d9 /help.c | |
parent | 2975c770ca609ea5afc80631c4ac9087c527b6fd (diff) | |
download | git-26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c.tar.gz |
use strip_suffix instead of ends_with in simple cases
When stripping a suffix like:
if (ends_with(str, "foo"))
buf = xmemdupz(str, strlen(str) - 3);
we can instead use strip_suffix to avoid the constant 3,
which must match the literal "foo" (we sometimes use
strlen("foo") instead, but that means we are repeating
ourselves). The example above becomes:
if (strip_suffix(str, "foo", &len))
buf = xmemdupz(str, len);
This also saves a strlen(), since we calculate the string
length when detecting the suffix.
Note that in some cases we also switch from xstrndup to
xmemdupz, which saves a further strlen call.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'help.c')
-rw-r--r-- | help.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -145,7 +145,7 @@ static void list_commands_in_dir(struct cmdnames *cmds, len = buf.len; while ((de = readdir(dir)) != NULL) { - int entlen; + size_t entlen; if (!starts_with(de->d_name, prefix)) continue; @@ -156,8 +156,7 @@ static void list_commands_in_dir(struct cmdnames *cmds, continue; entlen = strlen(de->d_name) - prefix_len; - if (ends_with(de->d_name, ".exe")) - entlen -= 4; + strip_suffix(de->d_name, ".exe", &entlen); add_cmdname(cmds, de->d_name + prefix_len, entlen); } |