summaryrefslogtreecommitdiff
path: root/connected.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-06-30 12:58:51 -0400
committerJunio C Hamano <gitster@pobox.com>2014-06-30 13:43:17 -0700
commit26936bfd9bde1ec46901bea3e53d4fb9ae1b4a4c (patch)
tree168d00b14d97061b2db5b1d068ec01870f2ce3d9 /connected.c
parent2975c770ca609ea5afc80631c4ac9087c527b6fd (diff)
downloadgit-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 'connected.c')
-rw-r--r--connected.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/connected.c b/connected.c
index be0253e21b..dae9c9972e 100644
--- a/connected.c
+++ b/connected.c
@@ -31,6 +31,7 @@ static int check_everything_connected_real(sha1_iterate_fn fn,
unsigned char sha1[20];
int err = 0, ac = 0;
struct packed_git *new_pack = NULL;
+ size_t base_len;
if (fn(cb_data, sha1))
return err;
@@ -38,10 +39,9 @@ static int check_everything_connected_real(sha1_iterate_fn fn,
if (transport && transport->smart_options &&
transport->smart_options->self_contained_and_connected &&
transport->pack_lockfile &&
- ends_with(transport->pack_lockfile, ".keep")) {
+ strip_suffix(transport->pack_lockfile, ".keep", &base_len)) {
struct strbuf idx_file = STRBUF_INIT;
- strbuf_addstr(&idx_file, transport->pack_lockfile);
- strbuf_setlen(&idx_file, idx_file.len - 5); /* ".keep" */
+ strbuf_add(&idx_file, transport->pack_lockfile, base_len);
strbuf_addstr(&idx_file, ".idx");
new_pack = add_packed_git(idx_file.buf, idx_file.len, 1);
strbuf_release(&idx_file);