From 870da718e38555352343a46ce02fb46d5eb3a365 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 9 Mar 2017 18:20:38 +0300 Subject: Fix path_match() character case sensitivity on Windows --- butl/filesystem.cxx | 10 ++++++++++ tests/wildcard/testscript | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/butl/filesystem.cxx b/butl/filesystem.cxx index e792bef..5135281 100644 --- a/butl/filesystem.cxx +++ b/butl/filesystem.cxx @@ -21,6 +21,8 @@ # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # endif + +# include // lcase() #endif #include // errno, E* @@ -797,7 +799,11 @@ namespace butl char pc; for (; rpi != rpe && (pc = *rpi) != '*' && rni != rne; ++rpi, ++rni) { +#ifndef _WIN32 if (*rni != pc && pc != '?') +#else + if (lcase (*rni) != lcase (pc) && pc != '?') +#endif return false; } @@ -832,7 +838,11 @@ namespace butl // for (; (pc = *pi) != '*' && ni != ne; ++pi, ++ni) { +#ifndef _WIN32 if (*ni != pc && pc != '?') +#else + if (lcase (*ni) != lcase (pc) && pc != '?') +#endif return false; } diff --git a/tests/wildcard/testscript b/tests/wildcard/testscript index bcd618f..4a6c532 100644 --- a/tests/wildcard/testscript +++ b/tests/wildcard/testscript @@ -74,6 +74,19 @@ } } } + + : case-sensitivity + : + : Test that matching is case-insensitive on Windows and sensitive otherwise. + : + if ($cxx.target.class != 'windows') + { + $* F*O/ foo/ == 1 + } + else + { + $* F*O/ foo/ + } } : path-search -- cgit v1.1