aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2012-09-17 11:40:19 +0200
committerBjörn Gustavsson <[email protected]>2012-09-17 11:40:19 +0200
commitb58ce62a0cf296ca8cd8cd77b053bc70ecf28758 (patch)
tree19a7d3deb9b4009d63648e939099bb1fba4877f0 /lib/stdlib/src
parent39e413c4129b3bf226f4168713e3a70bfffeef0d (diff)
parent70b5e24c9498225fadc08d19503269c8aad851bf (diff)
downloadotp-b58ce62a0cf296ca8cd8cd77b053bc70ecf28758.tar.gz
otp-b58ce62a0cf296ca8cd8cd77b053bc70ecf28758.tar.bz2
otp-b58ce62a0cf296ca8cd8cd77b053bc70ecf28758.zip
Merge branch 'bjorn/stdlib/filelib-wildcard/OTP-6874'
* bjorn/stdlib/filelib-wildcard/OTP-6874: Fix filelib:wildcard/2
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r--lib/stdlib/src/filelib.erl13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl
index fa4f92617c..6b19713609 100644
--- a/lib/stdlib/src/filelib.erl
+++ b/lib/stdlib/src/filelib.erl
@@ -132,6 +132,8 @@ do_wildcard_comp({compiled_wildcard,{exists,File}}, Mod) ->
{ok,_} -> [File];
_ -> []
end;
+do_wildcard_comp({compiled_wildcard,[cwd,Base|Rest]}, Mod) ->
+ do_wildcard_1([Base], Rest, Mod);
do_wildcard_comp({compiled_wildcard,[Base|Rest]}, Mod) ->
do_wildcard_1([Base], Rest, Mod).
@@ -143,7 +145,11 @@ do_wildcard_comp({compiled_wildcard,{exists,File}}, Cwd, Mod) ->
{ok,_} -> [File];
_ -> []
end;
-do_wildcard_comp({compiled_wildcard,[current|Rest]}, Cwd0, Mod) ->
+do_wildcard_comp({compiled_wildcard,[cwd|Rest0]}, Cwd0, Mod) ->
+ case Rest0 of
+ [current|Rest] -> ok;
+ Rest -> ok
+ end,
{Cwd,PrefixLen} = case filename:join([Cwd0]) of
Bin when is_binary(Bin) -> {Bin,byte_size(Bin)+1};
Other -> {Other,length(Other)+1}
@@ -383,7 +389,10 @@ compile_wildcard_1(Pattern) ->
[Root|Rest] = filename:split(Pattern),
case filename:pathtype(Root) of
relative ->
- compile_wildcard_2([Root|Rest], current);
+ case compile_wildcard_2([Root|Rest], current) of
+ {exists,_}=Wc -> Wc;
+ [_|_]=Wc -> [cwd|Wc]
+ end;
_ ->
compile_wildcard_2(Rest, [Root])
end.