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>
This commit is contained in:

committed by
Junio C Hamano

parent
2975c770ca
commit
26936bfd9b
5
help.c
5
help.c
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user