diff options
author | Björn Gustavsson <[email protected]> | 2015-10-30 09:58:58 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2015-10-30 09:58:58 +0100 |
commit | 7e9c71bfbcf57c08c863e1dc79e11fb8dfdf870f (patch) | |
tree | e140c77cb96273c63ed859a71c3c1473846b3446 | |
parent | 0563f1132a4b2fbb04dcbcea51e68a7f110502f2 (diff) | |
parent | 32ba359b05658960b86f7587b61b46d1fb2021be (diff) | |
download | otp-7e9c71bfbcf57c08c863e1dc79e11fb8dfdf870f.tar.gz otp-7e9c71bfbcf57c08c863e1dc79e11fb8dfdf870f.tar.bz2 otp-7e9c71bfbcf57c08c863e1dc79e11fb8dfdf870f.zip |
Merge branch 'bjorn/stdlib/beam_lib-doc/OTP-13063' into maint
* bjorn/stdlib/beam_lib-doc/OTP-13063:
beam_lib: Document all_chunks/1 and build_module/1
-rw-r--r-- | lib/stdlib/doc/src/beam_lib.xml | 14 | ||||
-rw-r--r-- | lib/stdlib/src/beam_lib.erl | 17 |
2 files changed, 25 insertions, 6 deletions
diff --git a/lib/stdlib/doc/src/beam_lib.xml b/lib/stdlib/doc/src/beam_lib.xml index c556180b8b..faf668735e 100644 --- a/lib/stdlib/doc/src/beam_lib.xml +++ b/lib/stdlib/doc/src/beam_lib.xml @@ -224,6 +224,13 @@ <funcs> <func> + <name name="all_chunks" arity="1"/> + <fsummary>Read all chunks from a BEAM file or binary</fsummary> + <desc> + <p>Reads chunk data for all chunks.</p> + </desc> + </func> + <func> <name name="chunks" arity="2"/> <fsummary>Read selected chunks from a BEAM file or binary</fsummary> <desc> @@ -251,6 +258,13 @@ </desc> </func> <func> + <name name="build_module" arity="1"/> + <fsummary>Creates a BEAM module from a list of chunks</fsummary> + <desc> + <p>Builds a BEAM module (as a binary) from a list of chunks.</p> + </desc> + </func> + <func> <name name="version" arity="1"/> <fsummary>Read the BEAM file's module version</fsummary> <desc> diff --git a/lib/stdlib/src/beam_lib.erl b/lib/stdlib/src/beam_lib.erl index b93ce97cd3..cbbab088f4 100644 --- a/lib/stdlib/src/beam_lib.erl +++ b/lib/stdlib/src/beam_lib.erl @@ -308,6 +308,17 @@ make_crypto_key(des3_cbc=Type, String) -> <<K3:8/binary,IVec:8/binary>> = erlang:md5([First|reverse(String)]), {Type,[K1,K2,K3],IVec,8}. +-spec build_module(Chunks) -> {'ok', Binary} when + Chunks :: [{chunkid(), dataB()}], + Binary :: binary(). + +build_module(Chunks0) -> + Chunks = list_to_binary(build_chunks(Chunks0)), + Size = byte_size(Chunks), + 0 = Size rem 4, % Assertion: correct padding? + {ok, <<"FOR1", (Size+4):32, "BEAM", Chunks/binary>>}. + + %% %% Local functions %% @@ -419,12 +430,6 @@ strip_file(File) -> end end. -build_module(Chunks0) -> - Chunks = list_to_binary(build_chunks(Chunks0)), - Size = byte_size(Chunks), - 0 = Size rem 4, % Assertion: correct padding? - {ok, <<"FOR1", (Size+4):32, "BEAM", Chunks/binary>>}. - build_chunks([{Id, Data} | Chunks]) -> BId = list_to_binary(Id), Size = byte_size(Data), |