diff options
Diffstat (limited to 'lib/stdlib/src/filelib.erl')
| -rw-r--r-- | lib/stdlib/src/filelib.erl | 16 | 
1 files changed, 13 insertions, 3 deletions
| diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl index c0921e4cf1..daae1fd2d2 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; @@ -371,7 +371,7 @@ compile_wildcard(Pattern, Cwd0) ->      [Root|Rest] = filename:split(Pattern),      case filename:pathtype(Root) of  	relative -> -	    Cwd = filename:join([Cwd0]), +	    Cwd = prepare_base(Cwd0),  	    compile_wildcard_2([Root|Rest], {cwd,Cwd});  	_ ->  	    compile_wildcard_2(Rest, {root,0,Root}) @@ -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) -> | 
