aboutsummaryrefslogtreecommitdiff
path: root/test-string-list.c
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2012-09-12 16:04:46 +0200
committerJunio C Hamano <gitster@pobox.com>2012-09-12 11:43:25 -0700
commitf103f95b11d087f07c0c48bf784cd9197e18f203 (patch)
tree97c404425b942675ffedece855f58b5132cd55e5 /test-string-list.c
parent31d5451eed2677531c80177ff9dc8f5285f5a187 (diff)
downloadgit-f103f95b11d087f07c0c48bf784cd9197e18f203.tar.gz
git-f103f95b11d087f07c0c48bf784cd9197e18f203.tar.xz
string_list: add a function string_list_longest_prefix()
Add a function that finds the longest string from a string_list that is a prefix of a given string. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'test-string-list.c')
-rw-r--r--test-string-list.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/test-string-list.c b/test-string-list.c
index 2d6eda707..5e9631fe3 100644
--- a/test-string-list.c
+++ b/test-string-list.c
@@ -97,6 +97,26 @@ int main(int argc, char **argv)
return 0;
}
+ if (argc == 4 && !strcmp(argv[1], "longest_prefix")) {
+ /* arguments: <colon-separated-prefixes>|- <string> */
+ struct string_list prefixes = STRING_LIST_INIT_DUP;
+ int retval;
+ const char *prefix_string = argv[2];
+ const char *string = argv[3];
+ const char *match;
+
+ parse_string_list(&prefixes, prefix_string);
+ match = string_list_longest_prefix(&prefixes, string);
+ if (match) {
+ printf("%s\n", match);
+ retval = 0;
+ }
+ else
+ retval = 1;
+ string_list_clear(&prefixes, 0);
+ return retval;
+ }
+
fprintf(stderr, "%s: unknown function name: %s\n", argv[0],
argv[1] ? argv[1] : "(there was none)");
return 1;