summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-05-28 22:41:42 +0800
committerruki <[email protected]>2021-05-28 22:41:42 +0800
commit1581e24742625d79eb79ab48bdeccfcb6580cab0 (patch)
tree31a9fcc211af0ae3c1fb9c0de9a4c0c38f6a5896
parent239c446b20ecceda838e0de77711be18805fab26 (diff)
improve os.match and path.pattern
-rw-r--r--xmake/actions/build/build_files.lua6
-rw-r--r--xmake/core/base/os.lua6
-rw-r--r--xmake/core/base/path.lua6
3 files changed, 7 insertions, 11 deletions
diff --git a/xmake/actions/build/build_files.lua b/xmake/actions/build/build_files.lua
index 90a21c3aa..dd89ea311 100644
--- a/xmake/actions/build/build_files.lua
+++ b/xmake/actions/build/build_files.lua
@@ -162,11 +162,7 @@ function _get_file_patterns(sourcefiles)
local _excludes = {}
for _, exclude in ipairs(excludes) do
exclude = path.translate(exclude)
- exclude = exclude:gsub("([%+%.%-%^%$%(%)%%])", "%%%1")
- exclude = exclude:gsub("%*%*", "\001")
- exclude = exclude:gsub("%*", "\002")
- exclude = exclude:gsub("\001", ".*")
- exclude = exclude:gsub("\002", "[^/]*")
+ exclude = path.pattern(exclude)
table.insert(_excludes, exclude)
end
excludes = _excludes
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index e26ac9956..071db0dfa 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -270,11 +270,7 @@ function os.match(pattern, mode, callback)
local _excludes = {}
for _, exclude in ipairs(excludes) do
exclude = path.translate(exclude)
- exclude = exclude:gsub("([%+%.%-%^%$%(%)%%])", "%%%1")
- exclude = exclude:gsub("%*%*", "\001")
- exclude = exclude:gsub("%*", "\002")
- exclude = exclude:gsub("\001", ".*")
- exclude = exclude:gsub("\002", "[^/]*")
+ exclude = path.pattern(exclude)
table.insert(_excludes, exclude)
end
excludes = _excludes
diff --git a/xmake/core/base/path.lua b/xmake/core/base/path.lua
index 9da3f57c4..18dbc6b01 100644
--- a/xmake/core/base/path.lua
+++ b/xmake/core/base/path.lua
@@ -191,7 +191,11 @@ function path.pattern(pattern)
pattern = pattern:gsub("%*%*", "\001")
pattern = pattern:gsub("%*", "\002")
pattern = pattern:gsub("\001", ".*")
- pattern = pattern:gsub("\002", "[^/]*")
+ if path.sep() == '\\' then
+ pattern = pattern:gsub("\002", "[^/\\]*")
+ else
+ pattern = pattern:gsub("\002", "[^/]*")
+ end
-- case-insensitive filesystem?
if not os.fscase() then