use skip_prefix to avoid repeated calculations
In some cases, we use starts_with to check for a prefix, and then use an already-calculated prefix length to advance a pointer past the prefix. There are no magic numbers or duplicated strings here, but we can still make the code simpler and more obvious by using skip_prefix. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6d87780399
commit
de8118e153
11
help.c
11
help.c
@ -129,7 +129,6 @@ static void list_commands_in_dir(struct cmdnames *cmds,
|
||||
const char *path,
|
||||
const char *prefix)
|
||||
{
|
||||
int prefix_len;
|
||||
DIR *dir = opendir(path);
|
||||
struct dirent *de;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
@ -139,15 +138,15 @@ static void list_commands_in_dir(struct cmdnames *cmds,
|
||||
return;
|
||||
if (!prefix)
|
||||
prefix = "git-";
|
||||
prefix_len = strlen(prefix);
|
||||
|
||||
strbuf_addf(&buf, "%s/", path);
|
||||
len = buf.len;
|
||||
|
||||
while ((de = readdir(dir)) != NULL) {
|
||||
const char *ent;
|
||||
int entlen;
|
||||
|
||||
if (!starts_with(de->d_name, prefix))
|
||||
if (!skip_prefix(de->d_name, prefix, &ent))
|
||||
continue;
|
||||
|
||||
strbuf_setlen(&buf, len);
|
||||
@ -155,11 +154,11 @@ static void list_commands_in_dir(struct cmdnames *cmds,
|
||||
if (!is_executable(buf.buf))
|
||||
continue;
|
||||
|
||||
entlen = strlen(de->d_name) - prefix_len;
|
||||
if (has_extension(de->d_name, ".exe"))
|
||||
entlen = strlen(ent);
|
||||
if (has_extension(ent, ".exe"))
|
||||
entlen -= 4;
|
||||
|
||||
add_cmdname(cmds, de->d_name + prefix_len, entlen);
|
||||
add_cmdname(cmds, ent, entlen);
|
||||
}
|
||||
closedir(dir);
|
||||
strbuf_release(&buf);
|
||||
|
3
http.c
3
http.c
@ -1087,11 +1087,10 @@ static int update_url_from_redirect(struct strbuf *base,
|
||||
if (!strcmp(asked, got->buf))
|
||||
return 0;
|
||||
|
||||
if (!starts_with(asked, base->buf))
|
||||
if (!skip_prefix(asked, base->buf, &tail))
|
||||
die("BUG: update_url_from_redirect: %s is not a superset of %s",
|
||||
asked, base->buf);
|
||||
|
||||
tail = asked + base->len;
|
||||
tail_len = strlen(tail);
|
||||
|
||||
if (got->len < tail_len ||
|
||||
|
Loading…
Reference in New Issue
Block a user