diff options
author | Erlang/OTP <[email protected]> | 2014-07-10 10:45:13 +0200 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2014-07-10 10:45:13 +0200 |
commit | b376a4b8dd21a943be3226bb696a1622537edf86 (patch) | |
tree | 04546a16fe10c520c21aecd95caaa890723f75d8 /lib/stdlib/src/filelib.erl | |
parent | a7176f9186ffd7eb2b26daca2264d425383cf6a7 (diff) | |
parent | ab5afc3d8cbd0211fef7c9c71edc2708f643f705 (diff) | |
download | otp-b376a4b8dd21a943be3226bb696a1622537edf86.tar.gz otp-b376a4b8dd21a943be3226bb696a1622537edf86.tar.bz2 otp-b376a4b8dd21a943be3226bb696a1622537edf86.zip |
Merge branch 'nox/filelib-wildcard-broken-link' into maint-17
* nox/filelib-wildcard-broken-link:
Update stdlib appup file
Update runtime dependencies
Update preloaded
Add tests of filelib and symlinks
Fix handling of broken symlinks in filelib
Conflicts:
erts/preloaded/ebin/erl_prim_loader.beam
Diffstat (limited to 'lib/stdlib/src/filelib.erl')
-rw-r--r-- | lib/stdlib/src/filelib.erl | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl index c0921e4cf1..9efbe8da20 100644 --- a/lib/stdlib/src/filelib.erl +++ b/lib/stdlib/src/filelib.erl @@ -265,7 +265,7 @@ do_wildcard(Pattern, Cwd, Mod) -> lists:sort(Files). do_wildcard_1({exists,File}, Mod) -> - case eval_read_file_info(File, Mod) of + case eval_read_link_info(File, Mod) of {ok,_} -> [File]; _ -> [] end; @@ -488,7 +488,7 @@ badpattern(Reason) -> error({badpattern,Reason}). eval_read_file_info(File, file) -> - file:read_link_info(File); + file:read_file_info(File); eval_read_file_info(File, erl_prim_loader) -> case erl_prim_loader:read_file_info(File) of error -> {error, erl_prim_loader}; @@ -497,6 +497,16 @@ eval_read_file_info(File, erl_prim_loader) -> eval_read_file_info(File, Mod) -> Mod:read_file_info(File). +eval_read_link_info(File, file) -> + file:read_link_info(File); +eval_read_link_info(File, erl_prim_loader) -> + case erl_prim_loader:read_link_info(File) of + error -> {error, erl_prim_loader}; + Res-> Res + end; +eval_read_link_info(File, Mod) -> + Mod:read_link_info(File). + eval_list_dir(Dir, file) -> file:list_dir(Dir); eval_list_dir(Dir, erl_prim_loader) -> |