diff options
author | Hans Bolinder <[email protected]> | 2018-01-04 16:54:22 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2018-01-05 16:37:42 +0100 |
commit | de0771a4b3d882161f10c1d2d03c8027327f9323 (patch) | |
tree | 26df8eed7c649978fdb513e5cd818e6592b1bafd /lib/stdlib/src/filelib.erl | |
parent | 31782c3accacafb20bc7efd46004921aea8f9f22 (diff) | |
download | otp-de0771a4b3d882161f10c1d2d03c8027327f9323.tar.gz otp-de0771a4b3d882161f10c1d2d03c8027327f9323.tar.bz2 otp-de0771a4b3d882161f10c1d2d03c8027327f9323.zip |
stdlib: Let filelib:find_source() search subdirs
The Design Principles states that an application can have Erlang
source files one level below the "src" directory, and now
filelib:find_source() by default searches one level below "src".
The same applies to "esrc". That directory is only mentioned in
filename(3).
Diffstat (limited to 'lib/stdlib/src/filelib.erl')
-rw-r--r-- | lib/stdlib/src/filelib.erl | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl index d7c313f214..a9c055f72d 100644 --- a/lib/stdlib/src/filelib.erl +++ b/lib/stdlib/src/filelib.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2017. All Rights Reserved. +%% Copyright Ericsson AB 1997-2018. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -544,17 +544,16 @@ default_search_rules() -> {"", ".c", c_source_search_rules()}, {"", ".in", basic_source_search_rules()}, %% plain old directory rules, backwards compatible - {"", ""}, - {"ebin","src"}, - {"ebin","esrc"} - ]. + {"", ""}] ++ erl_source_search_rules(). basic_source_search_rules() -> (erl_source_search_rules() ++ c_source_search_rules()). erl_source_search_rules() -> - [{"ebin","src"}, {"ebin","esrc"}]. + [{"ebin","src"}, {"ebin","esrc"}, + {"ebin",filename:join("src", "*")}, + {"ebin",filename:join("esrc", "*")}]. c_source_search_rules() -> [{"priv","c_src"}, {"priv","src"}, {"bin","c_src"}, {"bin","src"}, {"", "src"}]. @@ -634,8 +633,16 @@ try_dir_rule(Dir, Filename, From, To) -> Src = filename:join(NewDir, Filename), case is_regular(Src) of true -> {ok, Src}; - false -> error + false -> find_regular_file(wildcard(Src)) end; false -> error end. + +find_regular_file([]) -> + error; +find_regular_file([File|Files]) -> + case is_regular(File) of + true -> {ok, File}; + false -> find_regular_file(Files) + end. |