diff options
author | Dan Gudmundsson <[email protected]> | 2017-06-12 11:33:09 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2017-06-12 11:33:09 +0200 |
commit | af4709bf61d80cd28d8cfbead2e1bfb1944fea55 (patch) | |
tree | b314e1809ceda86bdcafd898928575cbbf226d18 /lib/stdlib/src | |
parent | 101ca33f75bc5cc0a456d5be7663d9d21ab6d156 (diff) | |
parent | 5167b60cfe076cf27368ad4a250e55e4507d42fa (diff) | |
download | otp-af4709bf61d80cd28d8cfbead2e1bfb1944fea55.tar.gz otp-af4709bf61d80cd28d8cfbead2e1bfb1944fea55.tar.bz2 otp-af4709bf61d80cd28d8cfbead2e1bfb1944fea55.zip |
Merge branch 'dgud/stdlib/shell-find-src'
* dgud/stdlib/shell-find-src:
stdlib: Lookup src path in beam
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r-- | lib/stdlib/src/shell.erl | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl index 76a2789406..6eafc7b209 100644 --- a/lib/stdlib/src/shell.erl +++ b/lib/stdlib/src/shell.erl @@ -1238,22 +1238,22 @@ read_file_records(File, Opts) -> end. %% This is how the debugger searches for source files. See int.erl. -try_source(Beam, CB) -> - Os = case lists:keyfind(options, 1, binary_to_term(CB)) of - false -> []; - {_, Os0} -> Os0 - end, +try_source(Beam, RawCB) -> + EbinDir = filename:dirname(Beam), + CB = binary_to_term(RawCB), + Os = proplists:get_value(options,CB, []), Src0 = filename:rootname(Beam) ++ ".erl", - case is_file(Src0) of - true -> parse_file(Src0, Os); - false -> - EbinDir = filename:dirname(Beam), - Src = filename:join([filename:dirname(EbinDir), "src", - filename:basename(Src0)]), - case is_file(Src) of - true -> parse_file(Src, Os); - false -> {error, nofile} - end + Src1 = filename:join([filename:dirname(EbinDir), "src", + filename:basename(Src0)]), + Src2 = proplists:get_value(source, CB, []), + try_sources([Src0,Src1,Src2], Os). + +try_sources([], _) -> + {error, nofile}; +try_sources([Src|Rest], Os) -> + case is_file(Src) of + true -> parse_file(Src, Os); + false -> try_sources(Rest, Os) end. is_file(Name) -> |