This series makes wildmatch compatible with fnmatch, at least for FNM_CASEFOLD and FNM_PATHNAME. This makes it possible to use wildmatch as a fnmatch replacement. The replacement is optional and turned on via USE_WILDMATCH. Step 2 would be turn USE_WILDMATCH by default and remove compat/fnmatch. We can leave it for now until we are certain we don't introduce any kind of regressions. Measurement is performed to see how wildmatch compete with fnmatch(es). I was surprised that my glibc version is even slower than compat/fnmatch. For more details, see 5/8. wildmatch is faster (about 20%) in most cases. It is slower in '*/*/*' tests both with and without FNM_PATHNAME. 7/8 and 8/8 fix that, making wildmatch fastest in all (tested) cases. I'd appreciate if people test it with more patterns (both weird and commonly used) against different fnmatch versions and turn on USE_WILDMATCH to see if we need to fix something else, both correctness and performance. So far I'm convinced that the replacement is a good thing to do. The series requires nd/wildmatch, obviously. Nguyễn Thái Ngọc Duy (8): compat/fnmatch: respect NO_FNMATCH* even on glibc wildmatch: rename constants and update prototype wildmatch: make dowild() take arbitrary flags wildmatch: support "no FNM_PATHNAME" mode test-wildmatch: add "perf" command to compare wildmatch and fnmatch Makefile: add USE_WILDMATCH to use wildmatch as fnmatch wildmatch: make a special case for "*/" with FNM_PATHNAME wildmatch: advance faster in <asterisk> + <literal> patterns Makefile | 6 +++ compat/fnmatch/fnmatch.c | 3 +- dir.c | 3 +- git-compat-util.h | 13 +++++ t/t3070-wildmatch.sh | 27 ++++++++++ test-wildmatch.c | 82 +++++++++++++++++++++++++++- wildmatch.c | 137 +++++++++++++++++++++++++++++------------------ wildmatch.h | 23 +++++--- 8 files changed, 232 insertions(+), 62 deletions(-) -- 1.8.0.rc2.23.g1fb49df -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html