summaryrefslogtreecommitdiff
path: root/test-wildmatch.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-01-10 13:47:15 -0800
committerJunio C Hamano <gitster@pobox.com>2013-01-10 13:47:20 -0800
commit2adf7247ec1f82032f52682918c200716145bffd (patch)
tree2af5f520d874aa11b668138aebecce58da3256eb /test-wildmatch.c
parent4249d850cff0d1d36b3a9c4cf38066c50365cfd1 (diff)
parentb6a3d3353f799c8c5afedb2da4df6e7cdc5d00c9 (diff)
downloadgit-2adf7247ec1f82032f52682918c200716145bffd.tar.gz
Merge branch 'nd/wildmatch'
Allows pathname patterns in .gitignore and .gitattributes files with double-asterisks "foo/**/bar" to match any number of directory hierarchies. * nd/wildmatch: wildmatch: replace variable 'special' with better named ones compat/fnmatch: respect NO_FNMATCH* even on glibc wildmatch: fix "**" special case t3070: Disable some failing fnmatch tests test-wildmatch: avoid Windows path mangling Support "**" wildcard in .gitignore and .gitattributes wildmatch: make /**/ match zero or more directories wildmatch: adjust "**" behavior wildmatch: fix case-insensitive matching wildmatch: remove static variable force_lower_case wildmatch: make wildmatch's return value compatible with fnmatch t3070: disable unreliable fnmatch tests Integrate wildmatch to git wildmatch: follow Git's coding convention wildmatch: remove unnecessary functions Import wildmatch from rsync ctype: support iscntrl, ispunct, isxdigit and isprint ctype: make sane_ctype[] const array Conflicts: Makefile
Diffstat (limited to 'test-wildmatch.c')
-rw-r--r--test-wildmatch.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/test-wildmatch.c b/test-wildmatch.c
new file mode 100644
index 0000000000..e384c8edb1
--- /dev/null
+++ b/test-wildmatch.c
@@ -0,0 +1,22 @@
+#include "cache.h"
+#include "wildmatch.h"
+
+int main(int argc, char **argv)
+{
+ int i;
+ for (i = 2; i < argc; i++) {
+ if (argv[i][0] == '/')
+ die("Forward slash is not allowed at the beginning of the\n"
+ "pattern because Windows does not like it. Use `XXX/' instead.");
+ else if (!strncmp(argv[i], "XXX/", 4))
+ argv[i] += 3;
+ }
+ if (!strcmp(argv[1], "wildmatch"))
+ return !!wildmatch(argv[3], argv[2], 0);
+ else if (!strcmp(argv[1], "iwildmatch"))
+ return !!wildmatch(argv[3], argv[2], FNM_CASEFOLD);
+ else if (!strcmp(argv[1], "fnmatch"))
+ return !!fnmatch(argv[3], argv[2], FNM_PATHNAME);
+ else
+ return 1;
+}