From 2975c770ca609ea5afc80631c4ac9087c527b6fd Mon Sep 17 00:00:00 2001 From: Jeff King Date: Mon, 30 Jun 2014 12:58:25 -0400 Subject: replace has_extension with ends_with These two are almost the same function, with the exception that has_extension only matches if there is content before the suffix. So ends_with(".exe", ".exe") is true, but has_extension would not be. This distinction does not matter to any of the callers, though, and we can just replace uses of has_extension with ends_with. We prefer the "ends_with" name because it is more generic, and there is nothing about the function that requires it to be used for file extensions. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- help.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'help.c') diff --git a/help.c b/help.c index b266b09320..372728fe7e 100644 --- a/help.c +++ b/help.c @@ -156,7 +156,7 @@ static void list_commands_in_dir(struct cmdnames *cmds, continue; entlen = strlen(de->d_name) - prefix_len; - if (has_extension(de->d_name, ".exe")) + if (ends_with(de->d_name, ".exe")) entlen -= 4; add_cmdname(cmds, de->d_name + prefix_len, entlen); -- cgit v1.2.3 From 26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c Mon Sep 17 00:00:00 2001 From: Jeff King Date: Mon, 30 Jun 2014 12:58:51 -0400 Subject: 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 Signed-off-by: Junio C Hamano --- help.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'help.c') diff --git a/help.c b/help.c index 372728fe7e..97567c4523 100644 --- a/help.c +++ b/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); } -- cgit v1.2.3