summaryrefslogtreecommitdiff
path: root/builtin/repack.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-06-30 16:58:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-06-30 20:43:17 (GMT)
commit26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c (patch)
tree168d00b14d97061b2db5b1d068ec01870f2ce3d9 /builtin/repack.c
parent2975c770ca609ea5afc80631c4ac9087c527b6fd (diff)
downloadgit-26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c.zip
git-26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c.tar.gz
git-26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c.tar.bz2
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 'builtin/repack.c')
-rw-r--r--builtin/repack.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/builtin/repack.c b/builtin/repack.c
index 6b0b62d..52f22ca 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -77,16 +77,15 @@ static void get_non_kept_pack_filenames(struct string_list *fname_list)
DIR *dir;
struct dirent *e;
char *fname;
- size_t len;
if (!(dir = opendir(packdir)))
return;
while ((e = readdir(dir)) != NULL) {
- if (!ends_with(e->d_name, ".pack"))
+ size_t len;
+ if (!strip_suffix(e->d_name, ".pack", &len))
continue;
- len = strlen(e->d_name) - strlen(".pack");
fname = xmemdupz(e->d_name, len);
if (!file_exists(mkpath("%s/%s.keep", packdir, fname)))