[PATCH v2 7/9] longest_ancestor_length(): use string_list_longest_prefix()
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Sep 29, 2012, 06:16 UTC
- Message-ID
- <1348899362-4057-8-git-send-email-mhagger@alum.mit.edu>
- In-Reply-To
- <1348899362-4057-1-git-send-email-mhagger@alum.mit.edu>
Use string_list_longest_prefix() in the implementation of longest_ancestor_length(), instead of an equivalent loop.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> --- path.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/path.c b/path.c index a56c64a..b20f2fb 100644 --- a/path.c +++ b/path.c @@ -604,23 +604,16 @@ static int normalize_path_callback(struct string_list_item *item, void *cb_data) int longest_ancestor_length(const char *path, const char *prefix_list) { struct string_list prefixes = STRING_LIST_INIT_DUP; - int i, max_len = -1; + int max_len; + const char *longest_prefix; if (prefix_list == NULL || !strcmp(path, "/")) return -1; string_list_split(&prefixes, prefix_list, PATH_SEP, -1); filter_string_list(&prefixes, 0, normalize_path_callback, NULL); - - for (i = 0; i < prefixes.nr; i++) { - const char *ceil = prefixes.items[i].string; - int len = strlen(ceil); - - if (!strncmp(path, ceil, len) && - len - 1 > max_len) { - max_len = len - 1; - } - } + longest_prefix = string_list_longest_prefix(&prefixes, path); + max_len = longest_prefix ? strlen(longest_prefix) - 1 : -1; string_list_clear(&prefixes, 0); return max_len;
-- 1.7.11.3