apply: remove prefix_length member from apply_state

Use a NULL-and-NUL check to see if we have a prefix and consistently use
C string functions on it instead of storing its length in a member of
struct apply_state.  This avoids strlen() calls and simplifies the code.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2017-08-09 17:54:46 +02:00 коммит произвёл Junio C Hamano
Родитель 95d6787973
Коммит 881529c846
2 изменённых файлов: 5 добавлений и 8 удалений

12
apply.c
Просмотреть файл

@ -79,7 +79,6 @@ int init_apply_state(struct apply_state *state,
{ {
memset(state, 0, sizeof(*state)); memset(state, 0, sizeof(*state));
state->prefix = prefix; state->prefix = prefix;
state->prefix_length = state->prefix ? strlen(state->prefix) : 0;
state->lock_file = lock_file; state->lock_file = lock_file;
state->newfd = -1; state->newfd = -1;
state->apply = 1; state->apply = 1;
@ -795,11 +794,11 @@ static int guess_p_value(struct apply_state *state, const char *nameline)
* Does it begin with "a/$our-prefix" and such? Then this is * Does it begin with "a/$our-prefix" and such? Then this is
* very likely to apply to our directory. * very likely to apply to our directory.
*/ */
if (!strncmp(name, state->prefix, state->prefix_length)) if (starts_with(name, state->prefix))
val = count_slashes(state->prefix); val = count_slashes(state->prefix);
else { else {
cp++; cp++;
if (!strncmp(cp, state->prefix, state->prefix_length)) if (starts_with(cp, state->prefix))
val = count_slashes(state->prefix) + 1; val = count_slashes(state->prefix) + 1;
} }
} }
@ -2078,10 +2077,9 @@ static int use_patch(struct apply_state *state, struct patch *p)
int i; int i;
/* Paths outside are not touched regardless of "--include" */ /* Paths outside are not touched regardless of "--include" */
if (0 < state->prefix_length) { if (state->prefix && *state->prefix) {
int pathlen = strlen(pathname); const char *rest;
if (pathlen <= state->prefix_length || if (!skip_prefix(pathname, state->prefix, &rest) || !*rest)
memcmp(state->prefix, pathname, state->prefix_length))
return 0; return 0;
} }

Просмотреть файл

@ -35,7 +35,6 @@ enum apply_verbosity {
struct apply_state { struct apply_state {
const char *prefix; const char *prefix;
int prefix_length;
/* These are lock_file related */ /* These are lock_file related */
struct lock_file *lock_file; struct lock_file *lock_file;