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
@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user